comparison forum/Themes/default/fader.js @ 76:e3e11437ecea website

Add forum code
author Chris Cannam
date Sun, 07 Jul 2013 11:25:48 +0200
parents
children
comparison
equal deleted inserted replaced
75:72f59aa7e503 76:e3e11437ecea
1 // smfFadeIndex: the current item in smfFadeContent.
2 var smfFadeIndex = -1;
3 // smfFadePercent: percent of fade. (-64 to 510.)
4 var smfFadePercent = 510
5 // smfFadeSwitch: direction. (in or out)
6 var smfFadeSwitch = false;
7 // smfFadeScroller: the actual div to mess with.
8 var smfFadeScroller = document.getElementById('smfFadeScroller');
9 // The ranges to fade from for R, G, and B. (how far apart they are.)
10 var smfFadeRange = {
11 'r': smfFadeFrom.r - smfFadeTo.r,
12 'g': smfFadeFrom.g - smfFadeTo.g,
13 'b': smfFadeFrom.b - smfFadeTo.b
14 };
15
16 // Divide by 20 because we are doing it 20 times per one ms.
17 smfFadeDelay /= 20;
18
19 // Start the fader!
20 window.setTimeout('smfFader();', 20);
21
22 // Main fading function... called 50 times every second.
23 function smfFader()
24 {
25 if (smfFadeContent.length <= 1)
26 return;
27
28 // A fix for Internet Explorer 4: wait until the document is loaded so we can use setInnerHTML().
29 if (typeof(window.document.readyState) != "undefined" && window.document.readyState != "complete")
30 {
31 window.setTimeout('smfFader();', 20);
32 return;
33 }
34
35 // Starting out? Set up the first item.
36 if (smfFadeIndex == -1)
37 {
38 setInnerHTML(smfFadeScroller, smfFadeBefore + smfFadeContent[0] + smfFadeAfter);
39 smfFadeIndex = 1;
40
41 // In Mozilla, text jumps around from this when 1 or 0.5, etc...
42 if (typeof(smfFadeScroller.style.MozOpacity) != "undefined")
43 smfFadeScroller.style.MozOpacity = "0.90";
44 else if (typeof(smfFadeScroller.style.opacity) != "undefined")
45 smfFadeScroller.style.opacity = "0.90";
46 // In Internet Explorer, we have to define this to use it.
47 else if (typeof(smfFadeScroller.style.filter) != "undefined")
48 smfFadeScroller.style.filter = "alpha(opacity=100)";
49 }
50
51 // Are we already done fading in? If so, fade out.
52 if (smfFadePercent >= 510)
53 smfFadeSwitch = !smfFadeSwitch;
54 // All the way faded out?
55 else if (smfFadePercent <= -64)
56 {
57 smfFadeSwitch = !smfFadeSwitch;
58
59 // Go to the next item, or first if we're out of items.
60 setInnerHTML(smfFadeScroller, smfFadeBefore + smfFadeContent[smfFadeIndex++] + smfFadeAfter);
61 if (smfFadeIndex >= smfFadeContent.length)
62 smfFadeIndex = 0;
63 }
64
65 // Increment or decrement the fade percentage.
66 if (smfFadeSwitch)
67 smfFadePercent -= 255 / smfFadeDelay * 2;
68 else
69 smfFadePercent += 255 / smfFadeDelay * 2;
70
71 // If it's not outside 0 and 256... (otherwise it's just delay time.)
72 if (smfFadePercent < 256 && smfFadePercent > 0)
73 {
74 // Easier... also faster...
75 var tempPercent = smfFadePercent / 255, rounded;
76
77 if (typeof(smfFadeScroller.style.MozOpacity) != "undefined")
78 {
79 rounded = Math.round(tempPercent * 100) / 100;
80 smfFadeScroller.style.MozOpacity = rounded == 1 ? "0.99" : rounded;
81 }
82 else if (typeof(smfFadeScroller.style.opacity) != "undefined")
83 {
84 rounded = Math.round(tempPercent * 100) / 100;
85 smfFadeScroller.style.opacity = rounded == 1 ? "0.99" : rounded;
86 }
87 else
88 {
89 var done = false;
90 if (typeof(smfFadeScroller.filters.alpha) != "undefined")
91 {
92 // Internet Explorer 4 just can't handle "try".
93 eval("try\
94 {\
95 smfFadeScroller.filters.alpha.opacity = Math.round(tempPercent * 100);\
96 done = true;\
97 }\
98 catch (err)\
99 {\
100 }");
101 }
102
103 if (!done)
104 {
105 // Get the new R, G, and B. (it should be bottom + (range of color * percent)...)
106 var r = Math.ceil(smfFadeTo.r + smfFadeRange.r * tempPercent);
107 var g = Math.ceil(smfFadeTo.g + smfFadeRange.g * tempPercent);
108 var b = Math.ceil(smfFadeTo.b + smfFadeRange.b * tempPercent);
109
110 // Set the color in the style, thereby fading it.
111 smfFadeScroller.style.color = 'rgb(' + r + ', ' + g + ', ' + b + ')';
112 }
113 }
114 }
115
116 // Keep going.
117 window.setTimeout('smfFader();', 20);
118 }