root / trunk / web / dojo / dojox / fx / text.js @ 13
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 | } |