diff forum/Themes/Vamp/fader.js @ 76:e3e11437ecea website

Add forum code
author Chris Cannam
date Sun, 07 Jul 2013 11:25:48 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/forum/Themes/Vamp/fader.js	Sun Jul 07 11:25:48 2013 +0200
@@ -0,0 +1,118 @@
+// smfFadeIndex: the current item in smfFadeContent.
+var smfFadeIndex = -1;
+// smfFadePercent: percent of fade. (-64 to 510.)
+var smfFadePercent = 510
+// smfFadeSwitch: direction. (in or out)
+var smfFadeSwitch = false;
+// smfFadeScroller: the actual div to mess with.
+var smfFadeScroller = document.getElementById('smfFadeScroller');
+// The ranges to fade from for R, G, and B. (how far apart they are.)
+var smfFadeRange = {
+	'r': smfFadeFrom.r - smfFadeTo.r,
+	'g': smfFadeFrom.g - smfFadeTo.g,
+	'b': smfFadeFrom.b - smfFadeTo.b
+};
+
+// Divide by 20 because we are doing it 20 times per one ms.
+smfFadeDelay /= 20;
+
+// Start the fader!
+window.setTimeout('smfFader();', 20);
+
+// Main	fading function... called 50 times every second.
+function smfFader()
+{
+	if (smfFadeContent.length <= 1)
+		return;
+
+	// A fix for Internet Explorer 4: wait until the document is loaded so we can use setInnerHTML().
+	if (typeof(window.document.readyState) != "undefined" && window.document.readyState != "complete")
+	{
+		window.setTimeout('smfFader();', 20);
+		return;
+	}
+
+	// Starting out?  Set up the first item.
+	if (smfFadeIndex == -1)
+	{
+		setInnerHTML(smfFadeScroller, smfFadeBefore + smfFadeContent[0] + smfFadeAfter);
+		smfFadeIndex = 1;
+
+		// In Mozilla, text jumps around from this when 1 or 0.5, etc...
+		if (typeof(smfFadeScroller.style.MozOpacity) != "undefined")
+			smfFadeScroller.style.MozOpacity = "0.90";
+		else if (typeof(smfFadeScroller.style.opacity) != "undefined")
+			smfFadeScroller.style.opacity = "0.90";
+		// In Internet Explorer, we have to define this to use it.
+		else if (typeof(smfFadeScroller.style.filter) != "undefined")
+			smfFadeScroller.style.filter = "alpha(opacity=100)";
+	}
+
+	// Are we already done fading in?  If so, fade out.
+	if (smfFadePercent >= 510)
+		smfFadeSwitch = !smfFadeSwitch;
+	// All the way faded out?
+	else if (smfFadePercent <= -64)
+	{
+		smfFadeSwitch = !smfFadeSwitch;
+
+		// Go to the next item, or first if we're out of items.
+		setInnerHTML(smfFadeScroller, smfFadeBefore + smfFadeContent[smfFadeIndex++] + smfFadeAfter);
+		if (smfFadeIndex >= smfFadeContent.length)
+			smfFadeIndex = 0;
+	}
+
+	// Increment or decrement the fade percentage.
+	if (smfFadeSwitch)
+		smfFadePercent -= 255 / smfFadeDelay * 2;
+	else
+		smfFadePercent += 255 / smfFadeDelay * 2;
+
+	// If it's not outside 0 and 256... (otherwise it's just delay time.)
+	if (smfFadePercent < 256 && smfFadePercent > 0)
+	{
+		// Easier... also faster...
+		var tempPercent = smfFadePercent / 255, rounded;
+
+		if (typeof(smfFadeScroller.style.MozOpacity) != "undefined")
+		{
+			rounded = Math.round(tempPercent * 100) / 100;
+			smfFadeScroller.style.MozOpacity = rounded == 1 ? "0.99" : rounded;
+		}
+		else if (typeof(smfFadeScroller.style.opacity) != "undefined")
+		{
+			rounded = Math.round(tempPercent * 100) / 100;
+			smfFadeScroller.style.opacity = rounded == 1 ? "0.99" : rounded;
+		}
+		else
+		{
+			var done = false;
+			if (typeof(smfFadeScroller.filters.alpha) != "undefined")
+			{
+				// Internet Explorer 4 just can't handle "try".
+				eval("try\
+					{\
+						smfFadeScroller.filters.alpha.opacity = Math.round(tempPercent * 100);\
+						done = true;\
+					}\
+					catch (err)\
+					{\
+					}");
+			}
+
+			if (!done)
+			{
+				// Get the new R, G, and B. (it should be bottom + (range of color * percent)...)
+				var r = Math.ceil(smfFadeTo.r + smfFadeRange.r * tempPercent);
+				var g = Math.ceil(smfFadeTo.g + smfFadeRange.g * tempPercent);
+				var b = Math.ceil(smfFadeTo.b + smfFadeRange.b * tempPercent);
+
+				// Set the color in the style, thereby fading it.
+				smfFadeScroller.style.color = 'rgb(' + r + ', ' + g + ', ' + b + ')';
+			}
+		}
+	}
+
+	// Keep going.
+	window.setTimeout('smfFader();', 20);
+}
\ No newline at end of file