var fade           = 1;

function fadeOut(elem) {
	if (elem.id) { fadeElementSetup(elem.id, 100, 0, 10); }
}

function fadeIn(elem) {
	if (elem.id) { fadeElementSetup(elem.id, 0, 100, 10); }
}

var fadeActive = new Array();
var fadeQueue  = new Array();
var fadeTimer  = new Array();
var fadeClose  = new Array();

function fadeElementSetup(theID, fdStart, fdEnd, fdSteps, fdClose) {
	if (fadeActive[theID] == true) {
		fadeQueue[theID] = new Array(theID, fdStart, fdEnd, fdSteps);
	} else {
		fadeSteps = fdSteps;
		fadeCurrent = 0;
		fadeAmount = (fdStart - fdEnd) / fadeSteps;
		fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 15);
		fadeActive[theID] = true;
		if (fdClose == 1) { fadeClose[theID] = true; }
		else { fadeClose[theID] = false; }
	}
}

function fadeElement(theID, fadeCurrent, fadeAmount, fadeSteps) {
	if (fadeCurrent == fadeSteps) {
	    clearInterval(fadeTimer[theID]);
	    fadeActive[theID] = false;
	    if (fadeClose[theID] == true) { document.getElementById(theID).style.visibility = "hidden"; }
	    if (fadeQueue[theID] && fadeQueue[theID] != false) {
	    	fadeElementSetup(fadeQueue[theID][0], fadeQueue[theID][1], fadeQueue[theID][2], fadeQueue[theID][3]);
	    	fadeQueue[theID] = false;
	    }  
	} else {
		fadeCurrent++;
		if (fadeAmount < 0) { setOpacity(Math.abs(fadeCurrent * fadeAmount), theID); }
		else { setOpacity(100 - (fadeCurrent * fadeAmount), theID); }
		clearInterval(fadeTimer[theID]);
		fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 15);
	}
}

function setOpacity(opacity, theID) {
	var object = document.getElementById(theID).style;
	if (navigator.userAgent.indexOf("Firefox") != -1) {
	   	if (opacity == 100) { opacity = 99.9999; }
	}

	object.filter = "alpha(opacity=" + opacity + ")"; // IE/Win
	object.opacity = (opacity / 100);                 // Safari 1.2, Firefox+Mozilla
}