Code Duplication    Length = 126-127 lines in 2 locations

public/demo/intro/codef_scrolltext.js 2 locations

@@ 47-173 (lines=127) @@
44
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
45
}
46
47
function scrolltext_horizontal(){
48
	this.scroffset=0;
49
	this.oldspeed=0;
50
	this.speed=1;
51
	this.font;
52
	this.letters = new Object();
53
	this.scrtxt=" ";
54
	this.pausetimer=0;
55
	this.pausedelay=0;
56
 
57
	this.init = function(dst, font,speed,sinparam,type){
58
		this.speed=speed;
59
		this.dst=dst;
60
		this.font=font;
61
		this.fontw = this.font.tilew;
62
		this.fonth = this.font.tileh;
63
		this.fontstart = this.font.tilestart;
64
		this.wide=Math.ceil(this.dst.canvas.width/this.fontw)+1;
65
		for(i=0;i<=this.wide;i++){
66
			this.letters[i]=new ltrobj(Math.ceil((this.wide*this.fontw)+i*this.fontw),0,this.scrtxt.charCodeAt(this.scroffset));
67
			this.scroffset++;
68
		}
69
		if(typeof(sinparam)!='undefined')
70
                        this.sinparam=sinparam;
71
		if(typeof(type)=='undefined')
72
                        this.type=0;
73
		else
74
			this.type=type;
75
	}
76
 
77
	this.draw = function(posy){
78
		var prov = 0;
79
		var temp = new Array();
80
		var tmp=this.dst.contex.globalAlpha;
81
		this.dst.contex.globalAlpha=1;
82
		var oldvalue=new Array();
83
		var i;
84
		if(typeof(this.sinparam)!='undefined'){
85
			for(var j=0;j<this.sinparam.length;j++){
86
				oldvalue[j]=this.sinparam[j].myvalue;
87
			}
88
		}
89
		if(this.speed==0){
90
			this.pausetimer+=1;
91
			if(this.pausetimer==60*this.pausedelay){
92
				this.speed=this.oldspeed;
93
			}
94
		}
95
		var speed=this.speed;
96
		for(i=0;i<=this.wide;i++){
97
			this.letters[i].posx-=speed;
98
			if(this.letters[i].posx<=-this.fontw){
99
				if(this.scrtxt.charAt(this.scroffset) =="^"){
100
					if(this.scrtxt.charAt(this.scroffset+1) =="P"){
101
						this.pausedelay=this.scrtxt.charAt(this.scroffset+2);
102
						this.pausetimer=0;
103
						this.oldspeed=this.speed;
104
						this.speed=0;
105
						this.scroffset+=3;
106
					}
107
					else if(this.scrtxt.charAt(this.scroffset+1) =="S"){
108
						this.speed=this.scrtxt.charAt(this.scroffset+2);
109
						this.scroffset+=3;
110
					}
111
					//
112
					// ADDON by Robert Annett
113
					//
114
					else if(this.scrtxt.charAt(this.scroffset+1) =="C"){
115
						var end = this.scrtxt.indexOf(';', this.scroffset+2);
116
						var functionName = this.scrtxt.substring(this.scroffset+2, end);			
117
						window[functionName]();
118
						this.scroffset+=(end-this.scroffset)+1;
119
					}
120
				}else{
121
					this.letters[i].posx=this.wide*this.fontw+(this.letters[i].posx+this.fontw);
122
					if(typeof(this.sinparam)!='undefined'){
123
						for(var j=0;j<this.sinparam.length;j++){
124
							oldvalue[j]+=this.sinparam[j].inc;
125
						}
126
					}
127
					this.letters[i].ltr=this.scrtxt.charCodeAt(this.scroffset);
128
					this.scroffset++;
129
					if(this.scroffset> this.scrtxt.length-1)
130
						this.scroffset=0;
131
				}
132
			}
133
		}
134
		if(typeof(this.sinparam)!='undefined'){
135
			for(var j=0;j<this.sinparam.length;j++){
136
					this.sinparam[j].myvalue=oldvalue[j];
137
			}
138
		}
139
		
140
		for(j=0;j<=this.wide;j++){
141
			temp[j]={indice:j, posx:this.letters[j].posx};
142
		}
143
		temp.sort(sortPosx);
144
		for(i=0;i<=this.wide;i++){
145
			if(typeof(this.sinparam)!='undefined'){
146
				prov = 0;
147
				for(var j=0;j<this.sinparam.length;j++){
148
					if(this.type==0)
149
						prov += Math.sin(this.sinparam[j].myvalue)*this.sinparam[j].amp;
150
					if(this.type==1)
151
						prov += -Math.abs(Math.sin(this.sinparam[j].myvalue)*this.sinparam[j].amp);
152
					if(this.type==2)
153
						prov += Math.abs(Math.sin(this.sinparam[j].myvalue)*this.sinparam[j].amp);
154
155
				}
156
			}
157
			this.font.drawTile(this.dst,this.letters[temp[i].indice].ltr-this.fontstart,this.letters[temp[i].indice].posx,prov+posy);
158
			
159
			if(typeof(this.sinparam)!='undefined'){
160
				for(var j=0;j<this.sinparam.length;j++){
161
					this.sinparam[j].myvalue+=this.sinparam[j].inc;
162
				}
163
			}
164
		}
165
		if(typeof(this.sinparam)!='undefined'){
166
			for(var j=0;j<this.sinparam.length;j++){
167
					this.sinparam[j].myvalue=oldvalue[j]+this.sinparam[j].offset;
168
			}
169
		}
170
		this.dst.contex.globalAlpha=tmp;
171
	}
172
	return this;
173
}
174
175
176
function scrolltext_vertical(){
@@ 176-301 (lines=126) @@
173
}
174
175
176
function scrolltext_vertical(){
177
	this.scroffset=0;
178
	this.oldspeed=0;
179
	this.speed=1;
180
	this.font;
181
	this.letters = new Object();
182
	this.scrtxt=" ";
183
	this.pausetimer=0;
184
	this.pausedelay=0;
185
 
186
	this.init = function(dst, font,speed,sinparam,type){
187
		this.speed=speed;
188
		this.dst=dst;
189
		this.font=font;
190
		this.fontw = this.font.tilew;
191
		this.fonth = this.font.tileh;
192
		this.fontstart = this.font.tilestart;
193
		this.wide=Math.ceil(this.dst.canvas.height/this.fonth)+1;
194
		for(i=0;i<=this.wide;i++){
195
			this.letters[i]=new ltrobj(0,Math.ceil((this.wide*this.fonth)+i*this.fonth),this.scrtxt.charCodeAt(this.scroffset));
196
			this.scroffset++;
197
		}
198
		if(typeof(sinparam)!='undefined')
199
                        this.sinparam=sinparam;
200
		if(typeof(type)=='undefined')
201
                        this.type=0;
202
		else
203
			this.type=type;
204
	}
205
 
206
	this.draw = function(posx){
207
		var prov = 0;
208
		var temp = new Array();
209
		var tmp=this.dst.contex.globalAlpha;
210
		this.dst.contex.globalAlpha=1;
211
		var oldvalue=new Array();
212
		var i;
213
		if(typeof(this.sinparam)!='undefined'){
214
			for(var j=0;j<this.sinparam.length;j++){
215
				oldvalue[j]=this.sinparam[j].myvalue;
216
			}
217
		}
218
		if(this.speed==0){
219
			this.pausetimer+=1;
220
			if(this.pausetimer==60*this.pausedelay){
221
				this.speed=this.oldspeed;
222
			}
223
		}
224
		var speed=this.speed;
225
		for(i=0;i<=this.wide;i++){
226
			this.letters[i].posy-=speed;
227
			if(this.letters[i].posy<=-this.fonth){
228
				if(this.scrtxt.charAt(this.scroffset) =="^"){
229
					if(this.scrtxt.charAt(this.scroffset+1) =="P"){
230
						this.pausedelay=this.scrtxt.charAt(this.scroffset+2);
231
						this.pausetimer=0;
232
						this.oldspeed=this.speed;
233
						this.speed=0;
234
						this.scroffset+=3;
235
					}
236
					else if(this.scrtxt.charAt(this.scroffset+1) =="S"){
237
						this.speed=this.scrtxt.charAt(this.scroffset+2);
238
						this.scroffset+=3;
239
					}
240
					//
241
					// ADDON by Robert Annett
242
					//
243
					else if(this.scrtxt.charAt(this.scroffset+1) =="C"){
244
						var end = this.scrtxt.indexOf(';', this.scroffset+2);
245
						var functionName = this.scrtxt.substring(this.scroffset+2, end);			
246
						window[functionName]();
247
						this.scroffset+=(end-this.scroffset)+1;
248
					}
249
				}else{
250
					this.letters[i].posy=this.wide*this.fonth+(this.letters[i].posy+this.fonth);
251
					if(typeof(this.sinparam)!='undefined'){
252
						for(var j=0;j<this.sinparam.length;j++){
253
							oldvalue[j]+=this.sinparam[j].inc;
254
						}
255
					}
256
					this.letters[i].ltr=this.scrtxt.charCodeAt(this.scroffset);
257
					this.scroffset++;
258
					if(this.scroffset> this.scrtxt.length-1)
259
						this.scroffset=0;
260
				}
261
			}
262
		}
263
		if(typeof(this.sinparam)!='undefined'){
264
			for(var j=0;j<this.sinparam.length;j++){
265
					this.sinparam[j].myvalue=oldvalue[j];
266
			}
267
		}
268
		
269
		for(j=0;j<=this.wide;j++){
270
			temp[j]={indice:j, posy:this.letters[j].posy};
271
		}
272
		temp.sort(sortPosy);
273
		for(i=0;i<=this.wide;i++){
274
			if(typeof(this.sinparam)!='undefined'){
275
				prov = 0;
276
				for(var j=0;j<this.sinparam.length;j++){
277
					if(this.type==0)
278
						prov += Math.sin(this.sinparam[j].myvalue)*this.sinparam[j].amp;
279
					if(this.type==1)
280
						prov += -Math.abs(Math.sin(this.sinparam[j].myvalue)*this.sinparam[j].amp);
281
					if(this.type==2)
282
						prov += Math.abs(Math.sin(this.sinparam[j].myvalue)*this.sinparam[j].amp);
283
				}
284
			}
285
			this.font.drawTile(this.dst,this.letters[temp[i].indice].ltr-this.fontstart,prov+posx,this.letters[temp[i].indice].posy);
286
			
287
			if(typeof(this.sinparam)!='undefined'){
288
				for(var j=0;j<this.sinparam.length;j++){
289
					this.sinparam[j].myvalue+=this.sinparam[j].inc;
290
				}
291
			}
292
		}
293
		if(typeof(this.sinparam)!='undefined'){
294
			for(var j=0;j<this.sinparam.length;j++){
295
					this.sinparam[j].myvalue=oldvalue[j]+this.sinparam[j].offset;
296
			}
297
		}
298
		this.dst.contex.globalAlpha=tmp;
299
	}
300
	return this;
301
}
302
303