
//*****************************************************
// Copyright:  © 2002 M H Payet
//
// Script Copyright: Warpgear Software
//
// File:       libFadr.js
// Language:	JavaScript
// Original:   WarpGear Software (jsfader@warpgear.com)
// Website:    http://www.warpgear.com/developer
//
// Description:
//    Jesuit Theological College Website
//    Fader function.
//    To be included on Home page only.
//    Minor modification for fader to work in MSIE only.
//*****************************************************

//=====================================================
// Set up variables.
//=====================================================

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
//  texts:
//  Your messages which may contain regular html tags but
//  must at least contain: [ <font color='{COLOR}'> ]
//  Use single quotes [ ' ] in your html only. If you need
//  a double quote in the message itself use an escape
//  sign like this: [ \" ]  (not including the brackets)

// variables bgcolor, fcolor, steps, show, sleep & loop set up in HTML file.

// Do Not Edit Below This Line

var colors = new Array(steps);

getFadeColors(bgcolor,fcolor,colors);

var color = 0;
var text = 0;
var step = 1;

//=====================================================
// Fade: Magic Fader Function
//=====================================================

function fade() {
   if (!browserVer4plus) return;

   // insert fader color into message
   var text_out = texts[text].replace("{COLOR}", colors[color]); // texts should be defined in user script, e.g.: var texts = new Array("<font color='{COLOR}' sized='+3' face='Arial'>howdy</font>");

   // actually write message to document
   if (document.all) fader.innerHTML = text_out; // document.all = IE only

   // select next fader color
   color += step;

   // completely faded in?
   if (color >= colors.length-1) {
      step = -1; // traverse colors array backward to fade out

      // stop at last message if loop=false
      if (!loop && text >= texts.length-1) return; // loop should be defined in user script, e.g.: var loop=true;
   }

   // completely faded out?
   if (color == 0) {
      step = 1; // traverse colors array forward to fade in again

      // select next message
      text += 1;
      if (text == texts.length) text = 0; // loop back to first message
   }

   // subtle timing logic...
   timerID = setTimeout("fade()", (color == colors.length-2 && step == -1) ? show : ((color == 1 && step == 1) ? sleep : 50)); // sleep and show should be defined in user script, e.g.: var sleep=30; var show=500;
}

//=====================================================
// Get Fade Colors: fills Colors (predefined Array)
// with color hex strings fading from ColorA to ColorB
// Note: Colors.length equals the number of steps to fade
//=====================================================

function getFadeColors(ColorA, ColorB, Colors) {
   if (!browserVer4plus) return;

   len = Colors.length;

   // strip '#' signs if present
   if (ColorA.charAt(0)=='#') ColorA = ColorA.substring(1);
   if (ColorB.charAt(0)=='#') ColorB = ColorB.substring(1);

   // substract rgb compents from hex string
   var r = HexToInt(ColorA.substring(0,2));
   var g = HexToInt(ColorA.substring(2,4));
   var b = HexToInt(ColorA.substring(4,6));
   var r2 = HexToInt(ColorB.substring(0,2));
   var g2 = HexToInt(ColorB.substring(2,4));
   var b2 = HexToInt(ColorB.substring(4,6));

   // calculate size of step for each color component
   var rStep = Math.round((r2 - r) / len);
   var gStep = Math.round((g2 - g) / len);
   var bStep = Math.round((b2 - b) / len);

   // fill Colors array with fader colors
   for (i = 0; i < len-1; i++) {
      Colors[i] = "#" + IntToHex(r) + IntToHex(g) + IntToHex(b);
      r += rStep;
      g += gStep;
      b += bStep;
   }
   Colors[len-1] = ColorB; // make sure we finish exactly at ColorB
}

//=====================================================
// IntToHex: converts integers between 0-255 into a two digit hex string.
//=====================================================

function IntToHex(n) {
   var result = n.toString(16);
   if (result.length==1) result = "0"+result;
   return result;
}

//=====================================================
// HexToInt: converts two digit hex strings into integer.
//=====================================================

function HexToInt(hex) {
   return parseInt(hex, 16);
}

// body tag should include: onload="fade()" bgcolor="#000000"  where bgcolor equals bgcolor in javascript above
// End -->

//=====================================================
//
//=====================================================

