/**
 *  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
 *
 */

function showHideElement(id, show) {
	if (el = document.getElementById(id)) {
		if (show) {
			el.style.display = 'inline';
		} else {
			el.style.display = 'none';
		}
	}
}

function opacity(id, opacStart, opacEnd, millisec, callbackFunc) { 
    //speed for each frame 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    //determine the direction for the blending, if start and end are the same nothing happens 
    if(opacStart > opacEnd) { 
        for(i = opacStart; i >= opacEnd; i--) { 
            setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed)); 
            timer++; 
        }
        if ((callbackFunc != "") && (typeof(callbackFunc) != "undefined"))
			setTimeout(callbackFunc, timer++ * speed);
    } else if(opacStart < opacEnd) { 
        for(i = opacStart; i <= opacEnd; i++) 
            { 
            setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed)); 
            timer++; 
        }
        if ((callbackFunc != "") && (typeof(callbackFunc) != "undefined"))
			setTimeout(callbackFunc, timer++ * speed);
    } 
} 

//change the opacity for different browsers 
function changeOpac(opacity, id) { 
	if (el = document.getElementById(id)) {
		var object = el.style; 
		object.opacity = (opacity / 100); 
		object.MozOpacity = (opacity / 100); 
		object.KhtmlOpacity = (opacity / 100); 
		object.filter = "alpha(opacity=" + opacity + ")"; 
	}
} 

var useBSNns;
var fatal = false;

if (useBSNns) {
	if (typeof(bsn) == "undefined")
		bsn = {}
	var _bsn = bsn;
} else {
	var _bsn = this;
}

_bsn.Crossfader = function (divs, fadetime, delay ) {	
	if (fatal) return;
	
	this.nAct = -1;
	this.aDivs = divs;
	
	for (var i=0;i<divs.length;i++) {
		if (el = document.getElementById(divs[i])) {
			el.style.opacity = 0;
			el.style.position = "absolute";
			el.style.filter = "alpha(opacity=0)";
			el.style.visibility = "hidden";
		}
	}
	
	this.nDur = fadetime;
	this.nDelay = delay;
		
	this._newfade();
}


_bsn.Crossfader.prototype._newfade = function() {
	if (fatal) return;
	
	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;
		
	try {
		document.getElementById( this.aDivs[this.nAct] ).style.visibility = "visible";
	} catch(e) {
		fatal = true;
		return;
	}
	
	this.nInt = 50;
	this.nTime = 0;
	
	var p=this;
	this.nID2 = setInterval(function() { p._fade() }, this.nInt);
}


_bsn.Crossfader.prototype._fade = function() {
	if (fatal) return;
	
	this.nTime += this.nInt;
	
	var ieop = Math.round( this._easeInOut(this.nTime, 0, 1, this.nDur) * 100 );
	var op = ieop / 100;
	
	try {
		document.getElementById( this.aDivs[this.nAct] ).style.opacity = op;
		document.getElementById( this.aDivs[this.nAct] ).style.filter = "alpha(opacity="+ieop+")";
		
		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);
		}
	} catch (e) {
		fatal = true;
		return;
	}
}

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