Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / fx / text.js @ 12

History | View | Annotate | Download (7.22 KB)

1 9 andrej.cim
/*
2
        Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3
        Available via Academic Free License >= 2.1 OR the modified BSD license.
4
        see: http://dojotoolkit.org/license for details
5
*/
6
7
8
if(!dojo._hasResource["dojox.fx.text"]){
9
dojo._hasResource["dojox.fx.text"]=true;
10
dojo.provide("dojox.fx.text");
11
dojo.require("dojo.fx");
12
dojo.require("dojo.fx.easing");
13
dojox.fx.text._split=function(_1){
14
var _2=_1.node=dojo.byId(_1.node),s=_2.style,cs=dojo.getComputedStyle(_2),_3=dojo.coords(_2,true);
15
_1.duration=_1.duration||1000;
16
_1.words=_1.words||false;
17
var _4=(_1.text&&typeof (_1.text)=="string")?_1.text:_2.innerHTML,_5=s.height,_6=s.width,_7=[];
18
dojo.style(_2,{height:cs.height,width:cs.width});
19
var _8=/(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)/g;
20
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);
21
var _a=(typeof _1.text=="string")?_1.text.match(_9):_2.innerHTML.match(_9);
22
var _b="";
23
var _c=0;
24
var _d=0;
25
for(var i=0;i<_a.length;i++){
26
var _e=_a[i];
27
if(!_e.match(_8)){
28
_b+="<span>"+_e+"</span>";
29
_c++;
30
}else{
31
_b+=_e;
32
}
33
}
34
_2.innerHTML=_b;
35
function _f(_10){
36
var _11=_10.nextSibling;
37
if(_10.tagName=="SPAN"&&_10.childNodes.length==1&&_10.firstChild.nodeType==3){
38
var _12=dojo.coords(_10,true);
39
_d++;
40
dojo.style(_10,{padding:0,margin:0,top:(_1.crop?"0px":_12.t+"px"),left:(_1.crop?"0px":_12.l+"px"),display:"inline"});
41
var _13=_1.pieceAnimation(_10,_12,_3,_d,_c);
42
if(dojo.isArray(_13)){
43
_7=_7.concat(_13);
44
}else{
45
_7[_7.length]=_13;
46
}
47
}else{
48
if(_10.firstChild){
49
_f(_10.firstChild);
50
}
51
}
52
if(_11){
53
_f(_11);
54
}
55
};
56
_f(_2.firstChild);
57
var _14=dojo.fx.combine(_7);
58
dojo.connect(_14,"onEnd",_14,function(){
59
_2.innerHTML=_4;
60
dojo.style(_2,{height:_5,width:_6});
61
});
62
if(_1.onPlay){
63
dojo.connect(_14,"onPlay",_14,_1.onPlay);
64
}
65
if(_1.onEnd){
66
dojo.connect(_14,"onEnd",_14,_1.onEnd);
67
}
68
return _14;
69
};
70
dojox.fx.text.explode=function(_15){
71
var _16=_15.node=dojo.byId(_15.node);
72
var s=_16.style;
73
_15.distance=_15.distance||1;
74
_15.duration=_15.duration||1000;
75
_15.random=_15.random||0;
76
if(typeof (_15.fade)=="undefined"){
77
_15.fade=true;
78
}
79
if(typeof (_15.sync)=="undefined"){
80
_15.sync=true;
81
}
82
_15.random=Math.abs(_15.random);
83
_15.pieceAnimation=function(_17,_18,_19,_1a,_1b){
84
var _1c=_18.h;
85
var _1d=_18.w;
86
var _1e=_15.distance*2;
87
var _1f=_15.duration;
88
var _20=parseFloat(_17.style.top);
89
var _21=parseFloat(_17.style.left);
90
var _22=0;
91
var _23=0;
92
var _24=0;
93
if(_15.random){
94
var _25=(Math.random()*_15.random)+Math.max(1-_15.random,0);
95
_1e*=_25;
96
_1f*=_25;
97
_22=((_15.unhide&&_15.sync)||(!_15.unhide&&!_15.sync))?(_15.duration-_1f):0;
98
_23=Math.random()-0.5;
99
_24=Math.random()-0.5;
100
}
101
var _26=((_19.h-_1c)/2-(_18.y-_19.y));
102
var _27=((_19.w-_1d)/2-(_18.x-_19.x));
103
var _28=Math.sqrt(Math.pow(_27,2)+Math.pow(_26,2));
104
var _29=_20-_26*_1e+_28*_24;
105
var _2a=_21-_27*_1e+_28*_23;
106
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(){
107
if(_15.fade){
108
dojo.style(_17,"opacity",0);
109
}
110
_17.style.position=_15.crop?"relative":"absolute";
111
_17.style.top=_29+"px";
112
_17.style.left=_2a+"px";
113
}:function(){
114
_17.style.position=_15.crop?"relative":"absolute";
115
}),properties:{top:(_15.unhide?{start:_29,end:_20}:{start:_20,end:_29}),left:(_15.unhide?{start:_2a,end:_21}:{start:_21,end:_2a})}});
116
if(_15.fade){
117
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})}});
118
return (_15.unhide?[_2c,_2b]:[_2b,_2c]);
119
}else{
120
return _2b;
121
}
122
};
123
var _2d=dojox.fx.text._split(_15);
124
return _2d;
125
};
126
dojox.fx.text.converge=function(_2e){
127
_2e.unhide=true;
128
return dojox.fx.text.explode(_2e);
129
};
130
dojox.fx.text.disintegrate=function(_2f){
131
var _30=_2f.node=dojo.byId(_2f.node);
132
var s=_30.style;
133
_2f.duration=_2f.duration||1500;
134
_2f.distance=_2f.distance||1.5;
135
_2f.random=_2f.random||0;
136
if(!_2f.fade){
137
_2f.fade=true;
138
}
139
var _31=Math.abs(_2f.random);
140
_2f.pieceAnimation=function(_32,_33,_34,_35,_36){
141
var _37=_33.h;
142
var _38=_33.w;
143
var _39=_2f.interval||(_2f.duration/(1.5*_36));
144
var _3a=(_2f.duration-_36*_39);
145
var _3b=Math.random()*_36*_39;
146
var _3c=(_2f.reverseOrder||_2f.distance<0)?(_35*_39):((_36-_35)*_39);
147
var _3d=_3b*_31+Math.max(1-_31,0)*_3c;
148
var _3e={};
149
if(_2f.unhide){
150
_3e.top={start:(parseFloat(_32.style.top)-_34.h*_2f.distance),end:parseFloat(_32.style.top)};
151
if(_2f.fade){
152
_3e.opacity={start:0,end:1};
153
}
154
}else{
155
_3e.top={end:(parseFloat(_32.style.top)+_34.h*_2f.distance)};
156
if(_2f.fade){
157
_3e.opacity={end:0};
158
}
159
}
160
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(){
161
if(_2f.fade){
162
dojo.style(_32,"opacity",0);
163
}
164
_32.style.position=_2f.crop?"relative":"absolute";
165
_32.style.top=_3e.top.start+"px";
166
}:function(){
167
_32.style.position=_2f.crop?"relative":"absolute";
168
})});
169
return _3f;
170
};
171
var _40=dojox.fx.text._split(_2f);
172
return _40;
173
};
174
dojox.fx.text.build=function(_41){
175
_41.unhide=true;
176
return dojox.fx.text.disintegrate(_41);
177
};
178
dojox.fx.text.blockFadeOut=function(_42){
179
var _43=_42.node=dojo.byId(_42.node);
180
var s=_43.style;
181
_42.duration=_42.duration||1000;
182
_42.random=_42.random||0;
183
var _44=Math.abs(_42.random);
184
_42.pieceAnimation=function(_45,_46,_47,_48,_49){
185
var _4a=_42.interval||(_42.duration/(1.5*_49));
186
var _4b=(_42.duration-_49*_4a);
187
var _4c=Math.random()*_49*_4a;
188
var _4d=(_42.reverseOrder)?((_49-_48)*_4a):(_48*_4a);
189
var _4e=_4c*_44+Math.max(1-_44,0)*_4d;
190
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(){
191
dojo.style(_45,"opacity",0);
192
}:undefined)});
193
return _4f;
194
};
195
var _50=dojox.fx.text._split(_42);
196
return _50;
197
};
198
dojox.fx.text.blockFadeIn=function(_51){
199
_51.unhide=true;
200
return dojox.fx.text.blockFadeOut(_51);
201
};
202
dojox.fx.text.backspace=function(_52){
203
var _53=_52.node=dojo.byId(_52.node);
204
var s=_53.style;
205
_52.words=false;
206
_52.duration=_52.duration||2000;
207
_52.random=_52.random||0;
208
var _54=Math.abs(_52.random);
209
var _55=10;
210
_52.pieceAnimation=function(_56,_57,_58,_59,_5a){
211
var _5b=_52.interval||(_52.duration/(1.5*_5a)),_5c=("textContent" in _56)?_56.textContent:_56.innerText,_5d=_5c.match(/\s/g);
212
if(typeof (_52.wordDelay)=="undefined"){
213
_52.wordDelay=_5b*2;
214
}
215
if(!_52.unhide){
216
_55=(_5a-_59-1)*_5b;
217
}
218
var _5e,_5f;
219
if(_52.fixed){
220
if(_52.unhide){
221
var _5e=function(){
222
dojo.style(_56,"opacity",0);
223
};
224
}
225
}else{
226
if(_52.unhide){
227
var _5e=function(){
228
_56.style.display="none";
229
};
230
var _5f=function(){
231
_56.style.display="inline";
232
};
233
}else{
234
var _5f=function(){
235
_56.style.display="none";
236
};
237
}
238
}
239
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});
240
if(_52.unhide){
241
var _61=Math.random()*_5c.length*_5b;
242
var _62=_61*_54/2+Math.max(1-_54/2,0)*_52.wordDelay;
243
_55+=_61*_54+Math.max(1-_54,0)*_5b*_5c.length+(_62*(_5d&&_5c.lastIndexOf(_5d[_5d.length-1])==_5c.length-1));
244
}
245
return _60;
246
};
247
var _63=dojox.fx.text._split(_52);
248
return _63;
249
};
250
dojox.fx.text.type=function(_64){
251
_64.unhide=true;
252
return dojox.fx.text.backspace(_64);
253
};
254
}