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++) {
		var tmp = document.getElementById( divs[i] );
		tmp.style.opacity		= 0;
		tmp.style.position		= "absolute";
		tmp.style.filter		= "alpha(opacity=0)";
		tmp.style.visibility	= "hidden";
		tmp.style.display		= "none";
	}

	this.nDur	= fadetime;
	this.nDelay	= delay;

	this._newfade();
}

_bsn.Crossfader.prototype._newfade = function() {
	if( this.nID1)
		clearInterval(this.nID1);

	this.nOldAct = this.nAct;
	this.nAct++;
	if( !this.aDivs[this.nAct])
		this.nAct = 0;

	if( this.nAct == this.nOldAct)
		return false;

	this.OldObj = document.getElementById( this.aDivs[this.nOldAct] );
	this.CurObj = document.getElementById( this.aDivs[this.nAct] );
	if( !this.CurObj)
		return false;

	this.CurObj.style.visibility	= "visible";
	this.CurObj.style.display		= "block";

	this.nInt	= 50;
	this.nTime	= 0;

	var p = this;
	this.nID2 = setInterval(
		function() {

p._fade()
		},
		this.nInt
	);
}

_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;
	this.CurObj.style.opacity	= (op == 1 ? .99 : op);
	this.CurObj.style.filter	= "alpha(opacity="+ieop+")";

	if( this.nOldAct > -1) {
		this.OldObj.style.opacity	= (op == 0 ? .99 : 1 - op);
		this.OldObj.style.filter	= "alpha(opacity="+(100 - ieop)+")";
	}

	if( this.nTime == this.nDur) {
		clearInterval( this.nID2 );
		if( this.nOldAct > -1) {
			this.OldObj.style.visibility	= "hidden";
			this.OldObj.style.display		= "none";
		}
		var p = this;
		this.nID1 = setInterval(
			function() {
				p._newfade()
			},
			this.nDelay
		);
	}
}

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

// easeInCubic
//	return c*((t=t/d-1)*t*t+1)+b;
	// easeOutCubic
//	return -c*Math.cos(t/d*(Math.PI/2))+c+b;	//	easeInSine
}