/**
 *  author:    Timothy Groves - http://www.brandspankingnew.net
 *  version:  1.3 - 2006-11-02
 *        1.2 - 2006-11-01
 *        1.1 - 2006-09-29
 *        1.0 - 2006-09-25
 *
 *  requires:  nothing
 *
 */


var useBSNns;

if(useBSNns)
{
  if(typeof(bsn)=="undefined")
    bsn={}
  var _bsn=bsn;}
else
{
    var _bsn=this;
}
  
_bsn.Crossfader=function(divs,fadetime,delay)
{
  this.nAct=-1;
  this.aDivs=divs;
  
  for(var i=0;i<divs.length;i++)
  {
    if(document.getElementById(divs[i]))
      document.getElementById(divs[i]).style.opacity=0;
    if(document.getElementById(divs[i]))
      document.getElementById(divs[i]).style.position="absolute";
    if(document.getElementById(divs[i]))
      document.getElementById(divs[i]).style.filter="alpha(opacity=0)";
    if(document.getElementById(divs[i]))
      document.getElementById(divs[i]).style.visibility="hidden";
  }
  this.nDur=fadetime;
  this.nDelay=delay;
  this.bPlay=1;
  this.queue=-1;
  this.nDelayCnt=0;
  var p=this;
  this.nID1=setInterval(function(){p._timer()},this.nDelay/100);
  
  this._newfade();
}

_bsn.Crossfader.prototype._timer=function()
{
  if(this.bPlay)
    this.nDelayCnt++;
  if(this.nDelayCnt>100&&!this.fading)
  {
    this._newfade();
  }
}

_bsn.Crossfader.prototype._selectfade=function(idx)
{
  this.queue=idx;
  this.nDelayCnt=101;
  this.bPlay=0;
  this.nDur=100;
}

_bsn.Crossfader.prototype._newfade=function()
{
  this.nDelayCnt=0;
  this.nOldAct=this.nAct;
  this.nAct++;
  
  if(this.queue>-1)
  {
    this.nAct=this.queue;
    this.queue=-1;
  }
  
  if(!this.aDivs[this.nAct])
    this.nAct=0;
  if(this.nAct==this.nOldAct)
    return false;
  if(document.getElementById(this.aDivs[this.nAct]))
    document.getElementById(this.aDivs[this.nAct]).style.visibility="visible";
    
  this.nInt=50;
  this.nTime=0;
  var p=this;
  this.fading=1;
  this.nID2=setInterval(function(){p._fade()},this.nInt);
}

_bsn.Crossfader.prototype._play=function()
{
  this.bPlay=1;
  this.nDelayCnt=100;
}

_bsn.Crossfader.prototype._fade=function()
{
  this.nTime+=this.nInt;
  var ieop=Math.round(this._easeInOut(this.nTime,0,1,this.nDur)*100);
  var op=ieop/100;
  if(document.getElementById(this.aDivs[this.nAct]))
    document.getElementById(this.aDivs[this.nAct]).style.opacity=op;
  if(document.getElementById(this.aDivs[this.nAct]))
    document.getElementById(this.aDivs[this.nAct]).style.filter="alpha(opacity="+ieop+")";
  if(this.nOldAct>-1)
  {
    if(document.getElementById(this.aDivs[this.nOldAct]))document.getElementById(this.aDivs[this.nOldAct]).style.opacity=1-op;
    if(document.getElementById(this.aDivs[this.nOldAct]))document.getElementById(this.aDivs[this.nOldAct]).style.filter="alpha(opacity="+(100-ieop)+")";
  }
  if(this.nTime>=this.nDur)
  {
    clearInterval(this.nID2);
    this.fading=0;
    if(this.nOldAct>-1)
      if(document.getElementById(this.aDivs[this.nOldAct]))
        document.getElementById(this.aDivs[this.nOldAct]).style.visibility="hidden";
    if(this.queue>-1)
    {
      this._selectfade(this.queue);this.queue=-1;
    }
    var p=this;this.nDelayCnt=0;
  }
}

_bsn.Crossfader.prototype._easeInOut=function(t,b,c,d)
{
  return c/2*(1-Math.cos(Math.PI*t/d))+b;
}
