blob: 5c9acd2dcbbce0def92d89841c53ddc491edc602 [file] [log] [blame]
/*
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.fx.text"]){
dojo._hasResource["dojox.fx.text"]=true;
dojo.provide("dojox.fx.text");
dojo.require("dojo.fx");
dojo.require("dojo.fx.easing");
dojox.fx.text._split=function(_1){
var _2=_1.node=dojo.byId(_1.node),s=_2.style,cs=dojo.getComputedStyle(_2),_3=dojo.coords(_2,true);
_1.duration=_1.duration||1000;
_1.words=_1.words||false;
var _4=(_1.text&&typeof (_1.text)=="string")?_1.text:_2.innerHTML,_5=s.height,_6=s.width,_7=[];
dojo.style(_2,{height:cs.height,width:cs.width});
var _8=/(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)/g;
var _9=(_1.words?/(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)\s*|([^\s<]+\s*)/g:/(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)\s*|([^\s<]\s*)/g);
var _a=(typeof _1.text=="string")?_1.text.match(_9):_2.innerHTML.match(_9);
var _b="";
var _c=0;
var _d=0;
for(var i=0;i<_a.length;i++){
var _e=_a[i];
if(!_e.match(_8)){
_b+="<span>"+_e+"</span>";
_c++;
}else{
_b+=_e;
}
}
_2.innerHTML=_b;
function _f(_10){
var _11=_10.nextSibling;
if(_10.tagName=="SPAN"&&_10.childNodes.length==1&&_10.firstChild.nodeType==3){
var _12=dojo.coords(_10,true);
_d++;
dojo.style(_10,{padding:0,margin:0,top:(_1.crop?"0px":_12.t+"px"),left:(_1.crop?"0px":_12.l+"px"),display:"inline"});
var _13=_1.pieceAnimation(_10,_12,_3,_d,_c);
if(dojo.isArray(_13)){
_7=_7.concat(_13);
}else{
_7[_7.length]=_13;
}
}else{
if(_10.firstChild){
_f(_10.firstChild);
}
}
if(_11){
_f(_11);
}
};
_f(_2.firstChild);
var _14=dojo.fx.combine(_7);
dojo.connect(_14,"onEnd",_14,function(){
_2.innerHTML=_4;
dojo.style(_2,{height:_5,width:_6});
});
if(_1.onPlay){
dojo.connect(_14,"onPlay",_14,_1.onPlay);
}
if(_1.onEnd){
dojo.connect(_14,"onEnd",_14,_1.onEnd);
}
return _14;
};
dojox.fx.text.explode=function(_15){
var _16=_15.node=dojo.byId(_15.node);
var s=_16.style;
_15.distance=_15.distance||1;
_15.duration=_15.duration||1000;
_15.random=_15.random||0;
if(typeof (_15.fade)=="undefined"){
_15.fade=true;
}
if(typeof (_15.sync)=="undefined"){
_15.sync=true;
}
_15.random=Math.abs(_15.random);
_15.pieceAnimation=function(_17,_18,_19,_1a,_1b){
var _1c=_18.h;
var _1d=_18.w;
var _1e=_15.distance*2;
var _1f=_15.duration;
var _20=parseFloat(_17.style.top);
var _21=parseFloat(_17.style.left);
var _22=0;
var _23=0;
var _24=0;
if(_15.random){
var _25=(Math.random()*_15.random)+Math.max(1-_15.random,0);
_1e*=_25;
_1f*=_25;
_22=((_15.unhide&&_15.sync)||(!_15.unhide&&!_15.sync))?(_15.duration-_1f):0;
_23=Math.random()-0.5;
_24=Math.random()-0.5;
}
var _26=((_19.h-_1c)/2-(_18.y-_19.y));
var _27=((_19.w-_1d)/2-(_18.x-_19.x));
var _28=Math.sqrt(Math.pow(_27,2)+Math.pow(_26,2));
var _29=_20-_26*_1e+_28*_24;
var _2a=_21-_27*_1e+_28*_23;
var _2b=dojo.animateProperty({node:_17,duration:_1f,delay:_22,easing:(_15.easing||(_15.unhide?dojo.fx.easing.sinOut:dojo.fx.easing.circOut)),beforeBegin:(_15.unhide?function(){
if(_15.fade){
dojo.style(_17,"opacity",0);
}
_17.style.position=_15.crop?"relative":"absolute";
_17.style.top=_29+"px";
_17.style.left=_2a+"px";
}:function(){
_17.style.position=_15.crop?"relative":"absolute";
}),properties:{top:(_15.unhide?{start:_29,end:_20}:{start:_20,end:_29}),left:(_15.unhide?{start:_2a,end:_21}:{start:_21,end:_2a})}});
if(_15.fade){
var _2c=dojo.animateProperty({node:_17,duration:_1f,delay:_22,easing:(_15.fadeEasing||dojo.fx.easing.quadOut),properties:{opacity:(_15.unhide?{start:0,end:1}:{end:0})}});
return (_15.unhide?[_2c,_2b]:[_2b,_2c]);
}else{
return _2b;
}
};
var _2d=dojox.fx.text._split(_15);
return _2d;
};
dojox.fx.text.converge=function(_2e){
_2e.unhide=true;
return dojox.fx.text.explode(_2e);
};
dojox.fx.text.disintegrate=function(_2f){
var _30=_2f.node=dojo.byId(_2f.node);
var s=_30.style;
_2f.duration=_2f.duration||1500;
_2f.distance=_2f.distance||1.5;
_2f.random=_2f.random||0;
if(!_2f.fade){
_2f.fade=true;
}
var _31=Math.abs(_2f.random);
_2f.pieceAnimation=function(_32,_33,_34,_35,_36){
var _37=_33.h;
var _38=_33.w;
var _39=_2f.interval||(_2f.duration/(1.5*_36));
var _3a=(_2f.duration-_36*_39);
var _3b=Math.random()*_36*_39;
var _3c=(_2f.reverseOrder||_2f.distance<0)?(_35*_39):((_36-_35)*_39);
var _3d=_3b*_31+Math.max(1-_31,0)*_3c;
var _3e={};
if(_2f.unhide){
_3e.top={start:(parseFloat(_32.style.top)-_34.h*_2f.distance),end:parseFloat(_32.style.top)};
if(_2f.fade){
_3e.opacity={start:0,end:1};
}
}else{
_3e.top={end:(parseFloat(_32.style.top)+_34.h*_2f.distance)};
if(_2f.fade){
_3e.opacity={end:0};
}
}
var _3f=dojo.animateProperty({node:_32,duration:_3a,delay:_3d,easing:(_2f.easing||(_2f.unhide?dojo.fx.easing.sinIn:dojo.fx.easing.circIn)),properties:_3e,beforeBegin:(_2f.unhide?function(){
if(_2f.fade){
dojo.style(_32,"opacity",0);
}
_32.style.position=_2f.crop?"relative":"absolute";
_32.style.top=_3e.top.start+"px";
}:function(){
_32.style.position=_2f.crop?"relative":"absolute";
})});
return _3f;
};
var _40=dojox.fx.text._split(_2f);
return _40;
};
dojox.fx.text.build=function(_41){
_41.unhide=true;
return dojox.fx.text.disintegrate(_41);
};
dojox.fx.text.blockFadeOut=function(_42){
var _43=_42.node=dojo.byId(_42.node);
var s=_43.style;
_42.duration=_42.duration||1000;
_42.random=_42.random||0;
var _44=Math.abs(_42.random);
_42.pieceAnimation=function(_45,_46,_47,_48,_49){
var _4a=_42.interval||(_42.duration/(1.5*_49));
var _4b=(_42.duration-_49*_4a);
var _4c=Math.random()*_49*_4a;
var _4d=(_42.reverseOrder)?((_49-_48)*_4a):(_48*_4a);
var _4e=_4c*_44+Math.max(1-_44,0)*_4d;
var _4f=dojo.animateProperty({node:_45,duration:_4b,delay:_4e,easing:(_42.easing||dojo.fx.easing.sinInOut),properties:{opacity:(_42.unhide?{start:0,end:1}:{end:0})},beforeBegin:(_42.unhide?function(){
dojo.style(_45,"opacity",0);
}:undefined)});
return _4f;
};
var _50=dojox.fx.text._split(_42);
return _50;
};
dojox.fx.text.blockFadeIn=function(_51){
_51.unhide=true;
return dojox.fx.text.blockFadeOut(_51);
};
dojox.fx.text.backspace=function(_52){
var _53=_52.node=dojo.byId(_52.node);
var s=_53.style;
_52.words=false;
_52.duration=_52.duration||2000;
_52.random=_52.random||0;
var _54=Math.abs(_52.random);
var _55=10;
_52.pieceAnimation=function(_56,_57,_58,_59,_5a){
var _5b=_52.interval||(_52.duration/(1.5*_5a));
var _5c=_56.textContent;
var _5d=_5c.match(/\s/g);
if(typeof (_52.wordDelay)=="undefined"){
_52.wordDelay=_5b*2;
}
if(!_52.unhide){
_55=(_5a-_59-1)*_5b;
}
var _5e,_5f;
if(_52.fixed){
if(_52.unhide){
var _5e=function(){
dojo.style(_56,"opacity",0);
};
}
}else{
if(_52.unhide){
var _5e=function(){
_56.style.display="none";
};
var _5f=function(){
_56.style.display="inline";
};
}else{
var _5f=function(){
_56.style.display="none";
};
}
}
var _60=dojo.animateProperty({node:_56,duration:1,delay:_55,easing:(_52.easing||dojo.fx.easing.sinInOut),properties:{opacity:(_52.unhide?{start:0,end:1}:{end:0})},beforeBegin:_5e,onEnd:_5f});
if(_52.unhide){
var _61=Math.random()*_5c.length*_5b;
var _62=_61*_54/2+Math.max(1-_54/2,0)*_52.wordDelay;
_55+=_61*_54+Math.max(1-_54,0)*_5b*_5c.length+(_62*(_5d&&_5c.lastIndexOf(_5d[_5d.length-1])==_5c.length-1));
}
return _60;
};
var _63=dojox.fx.text._split(_52);
return _63;
};
dojox.fx.text.type=function(_64){
_64.unhide=true;
return dojox.fx.text.backspace(_64);
};
}