Files
legacy_rock/Themes/default/fader.js

72 lines
2.2 KiB
JavaScript

// 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 10 because we are doing it 10 times per 1ms.
smfFadeDelay /= 10;
// Start the fader!
window.setTimeout('smfFader()', 10);
// Main fading function... called 10 times an ms.
function smfFader()
{
if (smfFadeContent.length <= 1)
return;
// Starting out? Set up the first item.
if (smfFadeIndex == -1)
{
setInnerHTML(smfFadeScroller, smfFadeBefore + smfFadeContent[0] + smfFadeAfter);
smfFadeIndex = 1;
}
// 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;
else
smfFadePercent += 255 / smfFadeDelay;
// 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;
// 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()', 10);
}