﻿/*
****************************************************************************
****************************************************************************
********************************* SCROLLER FUNCTIONS ***********************
****************************************************************************
****************************************************************************
*/

function fade_scroller(content){
if(!document.getElementById)
return;
if(!fade_scroller.ar)
fade_scroller.ar=[];
fade_scroller.ar[this.fsid=fade_scroller.ar.length]=this;
this.content=content;
this.index=0;
  document.write('<div id="fscroller'+this.fsid+'" style="color:rgb('+content.endcolor.join(',')+');width:'+content.fwidth+';height:'+content.fheight+'">'+content.begintag+content[0]+content.closetag+'</div>');
  if(this.content.pause){
  var sdiv=document.getElementById('fscroller'+this.fsid);
  var cacheobj=this;
  sdiv.onmouseover=function(){cacheobj.pausing=1;};
  sdiv.onmouseout=function(){cacheobj.pausing=0;};
  }
if(content.delay_before_start){
this.index=1;
this.playing=true;
var cacheobj=this;
setTimeout(function(){cacheobj.changecontent();}, content.delay_before_start);
}
else
this.changecontent();
}

/*Rafael Raposo edited function*/
//function to change content
fade_scroller.prototype.changecontent=function (){
var cachobj=this;
if(this.pausing){
setTimeout(function(){cachobj.changecontent();}, 300);
return;
}
  if (this.index>=this.content.length)
    this.index=0
    document.getElementById('fscroller'+this.fsid).style.color="rgb("+this.content.startcolor[0]+", "+this.content.startcolor[1]+", "+this.content.startcolor[2]+")"
    document.getElementById('fscroller'+this.fsid).innerHTML=this.content.begintag+this.content[this.index]+this.content.closetag
    if (this.content.fadelinks)
      this.linkcolorchange(1);
    else if(this.playing&&this.content.pausebetween)
      this.linkhide('hidden');
setTimeout(function(){cachobj.colorfade(1);}, this.playing&&this.content.pausebetween? this.content.pausebetween : 0);
this.playing=true;
  this.index++
}

fade_scroller.prototype.linkhide=function(state){
  this.obj=document.getElementById('fscroller'+this.fsid).getElementsByTagName('a');
    if (this.obj.length>0)
    for (var i=0;i<this.obj.length;i++)
      this.obj[i].style.visibility=state;
}
// colorfade() partially by Marcio Galli for Netscape Communications.  ////////////
// Modified by Dynamicdrive.com

fade_scroller.prototype.linkcolorchange=function (step){
  this.obj=document.getElementById('fscroller'+this.fsid).getElementsByTagName("A");
  if (this.obj.length>0){
    for (var i=0;i<this.obj.length;i++)
      this.obj[i].style.color=this.getstepcolor(step);
  }
}

/*Rafael Raposo edited function*/

fade_scroller.prototype.colorfade=function (step) {
if(!this.content.fadelinks&&this.playing&&this.content.pausebetween)
this.linkhide('');
    var cacheobj=this
  if(step<=this.content.maxsteps) {
    document.getElementById('fscroller'+this.fsid).style.color=this.getstepcolor(step);
    if (this.content.fadelinks)
      this.linkcolorchange(step);
    this.step=step+1;
    this.fadecounter=setTimeout(function(){cacheobj.colorfade(cacheobj.step);},this.content.stepdelay);
  }else{
    clearTimeout(this.fadecounter);
    document.getElementById('fscroller'+this.fsid).style.color="rgb("+this.content.endcolor[0]+", "+this.content.endcolor[1]+", "+this.content.endcolor[2]+")";
    setTimeout(function(){cacheobj.changecontent();}, this.content.delay);
	
  }   
}

/*Rafael Raposo's new function*/
fade_scroller.prototype.getstepcolor=function (step) {
this.newcolor=new Array(3);
  for(var i=0;i<3;i++) {
    this.diff = (this.content.startcolor[i]-this.content.endcolor[i]);
    if(this.diff > 0) {
      this.newcolor[i] = this.content.startcolor[i]-(Math.round((this.diff/this.content.maxsteps))*step);
    } else {
      this.newcolor[i] = this.content.startcolor[i]+(Math.round((Math.abs(this.diff)/this.content.maxsteps))*step);
    }
  }
  return ("rgb(" + this.newcolor[0] + ", " + this.newcolor[1] + ", " + this.newcolor[2] + ")");
}

