File: ticker.js

package info (click to toggle)
virtuoso-opensource 6.1.4%2Bdfsg1-7
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 245,116 kB
  • sloc: ansic: 639,631; sql: 439,225; xml: 287,085; java: 61,048; sh: 38,723; cpp: 36,889; cs: 25,240; php: 12,562; yacc: 9,036; lex: 7,149; makefile: 6,093; jsp: 4,447; awk: 1,643; perl: 1,017; ruby: 1,003; python: 329
file content (121 lines) | stat: -rw-r--r-- 3,166 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
 *  $Id: ticker.js,v 1.6.2.3 2010/04/06 16:46:12 source Exp $
 *
 *  This file is part of the OpenLink Software Ajax Toolkit (OAT) project.
 *
 *  Copyright (C) 2005-2010 OpenLink Software
 *
 *  See LICENSE file for details.
 */
/*
	t = new OAT.Ticker(div,text,options);

	options: {
		loop:OAT.TickerData.LOOP_NONE,
		add:OAT.TickerData.ADD_END,
		clear:OAT.TickerData.CLEAR_END,
		timing:OAT.TickerData.TIMING_GLOBAL,
		delay:3000,
		pause:1000
	}

	OAT.TickerData.ADD_START - add chars from start of string
	OAT.TickerData.ADD_END - add chars from end of string

	OAT.TickerData.CLEAR_ALL - clear contents when looping
	OAT.TickerData.CLEAR_START - remove chars from start
	OAT.TickerData.CLEAR_END - remove chars from end

	OAT.TickerData.TIMING_PERCHAR - specify delay per character
	OAT.TickerData.TIMING_GLOBAL - specify delay per string

	OAT.TickerData.LOOP_NONE - don't loop
	OAT.TickerData.LOOP_BACK - show and hide
	OAT.TickerData.LOOP_FULL - loop infinitely
*/

OAT.TickerData = {
	ADD_START:1,
	ADD_END:2,

	CLEAR_ALL:1,
	CLEAR_START:2,
	CLEAR_END:3,

	TIMING_PERCHAR:1,
	TIMING_GLOBAL:2,

	LOOP_NONE:1,
	LOOP_BACK:2,
	LOOP_FULL:3
}

OAT.Ticker = function(div,text,optObj) {
	var obj = this;
	this.text = text;
	this.elm = $(div);
	this.stopFlag = 0;
	this.options = {
		loop:OAT.TickerData.LOOP_NONE,
		add:OAT.TickerData.ADD_END,
		clear:OAT.TickerData.CLEAR_ALL,
		timing:OAT.TickerData.TIMING_GLOBAL,
		defDelay:3000,
		pause:1000
	}
	for (p in optObj) { this.options[p] = optObj[p]; }

	this.setText = function(text) { this.text = text; }

	this.tick = function() {
		if (obj.stopFlag) { obj.stopFlag = 0; return; }
		var delay = obj.options.delay;
		var end = 0;
		var old = obj.elm.innerHTML;
		if (obj.direction == 1) { /* forward */
			obj.index++;
			var n = (obj.options.add == OAT.TickerData.ADD_END ? obj.text.slice(0,obj.index) : obj.text.substr(obj.text.length-obj.index) );
		} else { /* backward */
			obj.index--;
			var n = (obj.options.clear == OAT.TickerData.CLEAR_END ? obj.text.slice(0,obj.index) : obj.text.substr(obj.text.length-obj.index) );
		}
		obj.elm.innerHTML = n;

		if (obj.index == obj.text.length) {
			if (obj.options.loop == OAT.TickerData.LOOP_FULL) {
				if (obj.options.clear == OAT.TickerData.CLEAR_ALL) {
					obj.index = 0;
				} else {
					obj.direction = -1;
				}
			}
			if (obj.options.loop == OAT.TickerData.LOOP_BACK) {
				obj.direction = -1;
			}
			delay += obj.options.pause;
		}

		if (obj.options.loop == OAT.TickerData.LOOP_FULL && obj.index == 0) {
			obj.direction = 1;
			delay += obj.options.pause;
		}

		if (obj.index == obj.text.length && obj.options.loop == OAT.TickerData.LOOP_NONE) { end = 1; }
		if (obj.index == 0 && obj.options.loop != OAT.TickerData.LOOP_FULL) { end = 1; }

		if (!end) { setTimeout(obj.tick,delay); }
	}

	this.start = function() {
		obj.direction = 1;
		obj.index = 0;
		if (obj.options.timing == OAT.TickerData.TIMING_GLOBAL) {
			obj.options.delay = Math.floor(obj.options.defDelay / obj.text.length);
		} else { obj.options.delay = obj.options.defDelay; }
		setTimeout(obj.tick,obj.options.delay);
	}

	this.stop = function() {
		obj.stopFlag = 1;
	}
}