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