
  /*===========^^¬ //
  /              |    >> Prepare for death, ye who copy here...
 /    ===========  \\
 |   |\ | /
 |   | ---   
 |   |                   (C)2001 Stephen Chalmers
  \_*/

LinkFadeData=
[

 ['navMenu',     0xffffff, 0xffffff, 0x00008F, 0xFF0000],
 ['lockBtn',     0x0fff00, 0xffffff, 0x00008F, 0x0080FF],

// ['barMenu',     0x00ffff, 0x00ffff, 0x00008f, 0xBF00BF],

 ['diagPage',    0xffffff, 0xffffff, 0x000000, 0xff4000],
 ['dumbLink',    0xffff00, 0xffffff, 0x008080, 0x0080ff],
 ['mainPage',    0x009000, 0x000000, 0xFFe4C6, 0xffffdf],
 ['mainTable',   0x009000, 0x000000, 0xffecd0, 0xffffFf],
 ['mainTableRed',0xff0000, 0x000000, 0xffecd0, 0xff8080],
 ['mainMail',    0x009000, 0x000000, 0xf8f8f8, 0x00ff00],
 ['mainSendBtn', 0xffffff, 0xffffff, 0x0000a0, 0xff40a0],
 ['components',  0xffffff, 0xffffff, 0x005000, 0x00c000],
 ['compDoubler', 0x00ff00, 0xffffff, 0x005000, 0x008f00],
 ['maplin',      0x00ff00, 0xffffff, 0x900000, 0xff2000],
 ['gallLink',    0x00ff00, 0xffffff, 0x004000, 0x0004ff],
 ['greenBtn',    0xffffff, 0x000000, 0x006000, 0x00ff00],
 ['dunnMessage', 0x00ffff, 0x00ffff, 0xC00000, 0xff0000],
 ['dunnLink',    0x00ffff, 0xffffff, 0x009000, 0x00Cf00],
 ['sbtn',        0xffffff, 0xffffff, 0x0040ff, 0xff00ff],
 ['intro1',      0x00ffff, 0xffffff, 0x000080, 0xff0fff],
 ['intro2',      0x00ffff, 0xffffff, 0x000080, 0xff0fff],
 ['intro3',      0x00ffff, 0xffffff, 0x000080, 0xff0fff],
 ['introClk',    0xffffff, 0xffffff, 0xff0fff, 0xcf0000],
 ['dumb',        0x00cf00, 0x00ff00, 0xffefc5, 0x404040],
 ['testBtn',     0xffffff, 0xff0000, 0x805000, 0xffe0a0],
 ['testLink',    0xff0000, 0xffc000, 0xf8dc98, 0x000000],
 ['cardBtn',     0xffffff, 0xffffff, 0x00008F, 0x00CFFF],
 ['cardLink',    0xffff00, 0xff0000, 0x0000C0, 0x00FFFF],
 ['constrBtn',   0xffffff, 0xffffff, 0x007000, 0x00cf00],
 ['constr',      0xffff00, 0xffffff, 0x005000, 0x0000ff],
 ['fiqLink',     0x000000, 0x000000, 0xFFEFD5, 0xffffA0],
 ['fiqMain',     0x008f00, 0x000000, 0xe6e6e6, 0xffffff],
 ['fiqToMain',   0xffd8a0, 0x000000, 0x000000, 0xffd8a0]

];
  
LinkFade=
{
 fadeInsts:[],

 toHexString:function(n) 
 {
  var retVal='#', v=n.toString(16), l=v.length;

  while( l++ < 6 )
   retVal+='0';

  return retVal+=v;
 },

 colourBlend:function(obj, colourData)
 {
  this.obj=obj;
  this.stepDir=-1;
  this.stepLength=16;
  this.stepPos=this.stepLength;

  this.initBg=colourData[3];
  this.bgStartRed=this.initBg>>>16;
  this.bgStartGreen=(this.initBg>>>8)&0x0000ff;
  this.bgStartBlue=this.initBg&0x0000FF;
  this.tbg=colourData[4];
  this.bgRedStep  =((this.tbg>>>16) - this.bgStartRed)/this.stepLength;
  this.bgGreenStep=(((this.tbg>>>8)&0xff) - this.bgStartGreen)/this.stepLength;
  this.bgBlueStep =((this.tbg&0xff) - this.bgStartBlue)/this.stepLength;
  this.newBgColour=0;

  this.initFg=colourData[1];
  this.fgStartRed=this.initFg>>>16;
  this.fgStartGreen=(this.initFg>>>8)&0x0000ff;
  this.fgStartBlue=this.initFg&0x0000FF;
  this.tfg=colourData[2];
  this.fgRedStep  =((this.tfg>>>16) - this.fgStartRed)/this.stepLength;
  this.fgGreenStep=(((this.tfg>>>8)&0xff) - this.fgStartGreen)/this.stepLength;
  this.fgBlueStep =((this.tfg&0xff) - this.fgStartBlue)/this.stepLength;
  this.newFgColour=0;
 },

 changeDir:function(obj)
 {
  obj.bgRedStep=-obj.bgRedStep;
  obj.bgBlueStep=-obj.bgBlueStep;
  obj.bgGreenStep=-obj.bgGreenStep;

  obj.fgRedStep=-obj.fgRedStep;
  obj.fgBlueStep=-obj.fgBlueStep;
  obj.fgGreenStep=-obj.fgGreenStep;
 
  obj.stepDir=-obj.stepDir;
 },

 blend:function(obj)
 {
  obj.bgStartRed+=obj.bgRedStep;
  obj.bgStartGreen+=obj.bgGreenStep;
  obj.bgStartBlue+=obj.bgBlueStep;
  obj.newBgColour=(obj.bgStartBlue+(obj.bgStartGreen<<8)+
                (obj.bgStartRed<<16))&0xFFFFFF;

  obj.fgStartRed+=obj.fgRedStep;
  obj.fgStartGreen+=obj.fgGreenStep;
  obj.fgStartBlue+=obj.fgBlueStep;
  obj.newFgColour=(obj.fgStartBlue+(obj.fgStartGreen<<8)+
                (obj.fgStartRed<<16))&0xFFFFFF;
                
  obj.obj.style.backgroundColor=this.toHexString(obj.newBgColour);
  obj.obj.style.color=this.toHexString(obj.newFgColour);
  obj.stepPos+=obj.stepDir;
 },

 cFade:function(obj, fadeData, action)
 { 
  for(var i=0; i<this.fadeInsts.length && this.fadeInsts[i].obj!=obj; i++)
  ;
 
  if(i==this.fadeInsts.length)
  {
   if(action==1)  
   {
    this.fadeInsts[this.fadeInsts.length]=new LinkFade.colourBlend(obj,fadeData);
    this.blend(this.fadeInsts[i]); 
   }
  }
  else 
   this.changeDir(this.fadeInsts[i]); 
 },

 scanLinks:function()
 {
  var i,j;

  for( i=0; i<this.fadeInsts.length; i++ )
  {
   if( this.fadeInsts[i].stepDir==-1 && this.fadeInsts[i].stepPos>0 )
    this.blend(this.fadeInsts[i]);
   else 
    if( this.fadeInsts[i].stepDir==1 )
     if( this.fadeInsts[i].stepPos<this.fadeInsts[i].stepLength )
      this.blend(this.fadeInsts[i]);
     else 
      this.fadeInsts.splice(i,1);
  }
  //window.status=this.fadeInsts.length;
 },

 getElements:function (obj) 
 {
  var allElems=[]; 
 
  for (var i=0; i < obj.childNodes.length; i++)
   if (obj.childNodes[i].nodeType==1) // Elements only
   { 
    allElems[ allElems.length ]=obj.childNodes[i];
    allElems=allElems.concat( getElements(obj.childNodes[i]) );
   } 
 
  return allElems;
 },

 faderSetup:function()
 {
  if(document.getElementById)
  {
   var allElements=[];
  
   allElements=document.all || document.getElementsByTagName("*") || getElements( document.childNodes[0] );
    
   if(typeof allElements != 'undefined' && allElements.length)
    for(var i=0; i<allElements.length; i++) 
    {
     for(var j=0; j<LinkFadeData.length; j++)
     {
      if( LinkFadeData[j][0]==allElements[i].className )
      {
       allElements[i].onmouseover=new Function("if(typeof LinkFade!='undefined')LinkFade.cFade(this,LinkFadeData["+j+"], 1)");
       
       allElements[i].onfocus=allElements[i].onmouseover;
       
       allElements[i].onmouseout =new Function("if(typeof LinkFade!='undefined')LinkFade.cFade(this,LinkFadeData["+j+"], 0)");
       
       allElements[i].onblur=allElements[i].onmouseout;
         
       allElements[i].style.color=this.toHexString( LinkFadeData[ j ][1] );
       allElements[i].style.backgroundColor=this.toHexString( LinkFadeData[ j ][3] );
      }
     }
    }  
  }
   setInterval("LinkFade.scanLinks()",40);
 } 
 
} //End obj

if(typeof Array().splice=='undefined')
{
  Array.prototype.splice=function(start, count)
  {
   for(var i=start; i+count<this.length; i++)   
    this[i] = this[i+count];
   this.length-=count; 
  } 
}

LinkFade.faderSetup();