Mercurial > hg > vamp-website
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 } |