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++) {
		document.getElementById(divs[i]).style.opacity = 0;
		document.getElementById(divs[i]).style.position = "absolute";
		document.getElementById(divs[i]).style.filter = "alpha(opacity=0)";
		document.getElementById(divs[i]).style.visibility = "hidden";
	}
	
	this.nDur = fadetime;
	this.nDelay = delay;
		
	this.estado = 1;	// Para que funcione el play-pausa del rotador.

	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;
	}
	
	document.getElementById( this.aDivs[this.nAct] ).style.visibility = "visible";
	
	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;
	document.getElementById( this.aDivs[this.nAct] ).style.opacity = op;
	document.getElementById( this.aDivs[this.nAct] ).style.filter = "alpha(opacity="+ieop+")";

	alturadiv = document.getElementById( this.aDivs[this.nAct] ).clientHeight +12;
	document.getElementById('cf_rotador').style.height = alturadiv + 'px';

	if (this.nOldAct > -1) {
		document.getElementById( this.aDivs[this.nOldAct] ).style.opacity = 1 - op;
		document.getElementById( this.aDivs[this.nOldAct] ).style.filter = "alpha(opacity="+(100 - ieop)+")";
	}
	
	if (this.nTime >= this.nDur) {
		clearInterval( this.nID2 );
		
		if (this.nOldAct > -1) {
			document.getElementById( this.aDivs[this.nOldAct] ).style.visibility = "hidden";
		}
		
		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;
}

_bsn.Crossfader.prototype.changeFade = function(idOld,idNew) {

	clearTimeout(this.nID1);
	clearTimeout(this.nID2);

	this.nOldAct = this.nAct;
	this.nAct = idNew-1;

	if (this.nAct < 0) { 
		this.nAct = 0;
	}

	for (var i=0;i<this.aDivs.length;i++) {
		document.getElementById(this.aDivs[i]).style.opacity = 0;
		document.getElementById(this.aDivs[i]).style.filter = "alpha(opacity=0)";
		document.getElementById(this.aDivs[i]).style.visibility = "hidden";
	}

	document.getElementById(this.aDivs[this.nAct]).style.opacity = 1;
	document.getElementById(this.aDivs[this.nAct]).style.filter = "alpha(opacity=100)";
	document.getElementById(this.aDivs[this.nAct]).style.visibility = "visible";
	
	// this.nInt = 50;
	this.nInt = this.nDur;
	this.nTime = 0;
	
	if (this.estado) {
		var p=this;
		this.nID2 = setInterval(function() { p._fade() }, this.nInt);
	}
}


_bsn.Crossfader.prototype.changeState = function(estado) {

	clearTimeout(this.nID1);
	clearTimeout(this.nID2);


	for (var i=0;i<this.aDivs.length;i++) {
		document.getElementById(this.aDivs[i]).style.opacity = 0;
		document.getElementById(this.aDivs[i]).style.filter = "alpha(opacity=0)";
		document.getElementById(this.aDivs[i]).style.visibility = "hidden";
	}

	document.getElementById(this.aDivs[this.nAct]).style.opacity = 1;
	document.getElementById(this.aDivs[this.nAct]).style.filter = "alpha(opacity=100)";
	document.getElementById(this.aDivs[this.nAct]).style.visibility = "visible";


	if (estado == 'play') {

		this.estado = 1;

		this.nOldAct = this.nAct;
		this.nAct++;
		if (!this.aDivs[this.nAct]) {
			this.nAct = 0;
		}
	
		if (this.nAct == this.nOldAct) {
			return false;
		}

		// Para que me muestre el siguiente...
		document.getElementById(this.aDivs[this.nAct]).style.visibility = "visible";
	
		// this.nInt = 50;
		this.nInt = this.nDur;
		this.nTime = 0;
	
		var p=this;
		this.nID2 = setInterval(function() { p._fade() }, this.nInt);
	} else {
		this.estado = 0;
	}
}