//Timeout variables
	var messageTimeout;
	var fadeInTimeout;
	var fadeOutTimeout;

//Number of message divs on the page
	var numOfMessageDivs = 4;

//Timing variables
	//milliseconds to display each message before showing the next
	var messageSpeed = 5000;
	//milliseconds to wait between opacity changes
	var opacityDelay = 70;
	//percentage points to step by on opacity changes
	var opacityStep = 7;

//"Index" of next message div to show; default to 1 for first load
var nextMessageDivToShow = 1;

//Whether or not this is the first execution of the loop or not
var firstLoad = true;

//Find out if the user-agent is IE6 and store it
var usingIE6 = (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) && (navigator.userAgent.toLowerCase().indexOf('msie 7') == -1);

/*
//for testing
var seconds = 0;
function secondTimer() {
	window.status = seconds++;
	window.setTimeout("secondTimer()", 1000);
}
secondTimer();
*/

function setOpacity(obj, opacity) {
	opacity = (opacity == 100) ? 99.999 : opacity;
	//IE/Win
		if (!usingIE6) {
			obj.style.filter = "alpha(opacity:" + opacity + ")";
		}
	//Safari<1.2, Konqueror
		obj.style.KHTMLOpacity = opacity / 100;
	//Older Mozilla and Firefox
		obj.style.MozOpacity = opacity / 100;
	//Safari 1.2, newer Firefox and Mozilla, CSS3
		obj.style.opacity = opacity / 100;
}


function fadeIn(objId, opacity) {
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity <= 100) {
			setOpacity(obj, opacity);
			opacity += opacityStep;
			fadeInTimeout = setTimeout("fadeIn('" + objId + "'," + opacity + ")", opacityDelay);
		}
	}
}


function fadeOut(objId, opacity) {
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity > (Math.abs(opacityStep) * -1) - 1) {
			setOpacity(obj, opacity);
			opacity -= opacityStep;
			fadeOutTimeout = setTimeout("fadeOut('" + objId + "'," + opacity + ")", opacityDelay);
		}
		else {
			obj.style.display = 'none';
			setOpacity(obj, 0);
		}
	}
}


function setActiveMessageLink(what) {
	for (var i = 1; i <= numOfMessageDivs; i++) {
		if (i != what) {
			document.getElementById('messageLink' + i).style.border = '2px solid #000000';
		}
		else {
			document.getElementById('messageLink' + i).style.border = '2px solid #FFFFFF';
		}
	}
}


function getActiveMessageDivIndex() {
	for (var i = 1; i <= numOfMessageDivs; i++) {
		if (document.getElementById('message' + i).style.display == 'block') {
			return i;
		}
	}
	return 1;
}


function changeMessageDiv(showDiv, loop) {
	
	if (typeof showDiv == 'undefined') showDiv = nextMessageDivToShow;
	if (typeof loop == 'undefined') loop = true;
	
	setActiveMessageLink(showDiv);
	var currentMessageDivShowing = getActiveMessageDivIndex();
	
	//this block runs when the user clicks a message link
	if (!loop) {
		clearTimeout(messageTimeout);
		clearTimeout(fadeInTimeout);
		clearTimeout(fadeOutTimeout);
		//hide all divs that are not involved with this execution
		for (i = 1; i <= numOfMessageDivs; i++) {
			if (i != showDiv) {
				document.getElementById('message' + i).style.display = 'none';
				document.getElementById('message' + i).style.zIndex = 0;
				setOpacity(document.getElementById('message' + i), 0);
			}
		}
		document.getElementById('message' + showDiv).style.display = 'block';
		document.getElementById('message' + showDiv).style.zIndex = (numOfMessageDivs * 10);
		setOpacity(document.getElementById('message' + showDiv), 100);
	}
	
	//this block runs when the user has done nothing
	else {
		
		//this block should be the very first block to execute upon page load
		if (firstLoad) {
			for (i = 1; i <= numOfMessageDivs; i++) {
				if (i != showDiv) {
					document.getElementById('message' + i).style.display = 'none';
					document.getElementById('message' + i).style.zIndex = 0;
					setOpacity(document.getElementById('message' + i), 0);
				}
			}
			document.getElementById('message' + showDiv).style.display = 'block';
			document.getElementById('message' + showDiv).style.zIndex = (numOfMessageDivs * 10);
			firstLoad = false;
			nextMessageDivToShow = 2;
			messageTimeout = setTimeout("changeMessageDiv()", messageSpeed);
			/*
				We need to prevent (opacityDelay * (100 / opacityStep)) from being greater than messageSpeed 
				or else we could have unpredictable results on the user's screen. Also, we want messageSpeed 
				to be how long the message is displayed at 100% opacity, instead of how long we wait before 
				changing what is displayed, so we will increment messageSpeed by (opacityDelay * (100 / opacityStep)) 
				now that the firstLoad is over.
			*/
			messageSpeed = Math.round(messageSpeed + (opacityDelay * (100 / opacityStep)));
		}
		
		//this block should run every n seconds if it is not the first load
		else {
			
			//hide all divs that are not involved with this execution
			for (i = 1; i <= numOfMessageDivs; i++) {
				if ((i != currentMessageDivShowing) && (i != showDiv)) {
					document.getElementById('message' + i).style.display = 'none';
					document.getElementById('message' + i).style.zIndex = 0;
					setOpacity(document.getElementById('message' + i), 0);
				}
			}
			
			//put the div to show (showDiv) on top with 0% opacity
			document.getElementById('message' + showDiv).style.display = 'block';
			document.getElementById('message' + showDiv).style.zIndex = (numOfMessageDivs * 10);
			setOpacity(document.getElementById('message' + showDiv), 0);
			
			//put the div to hide (currentMessageDivShowing) underneath with 100% opacity
			document.getElementById('message' + currentMessageDivShowing).style.display = 'block';
			document.getElementById('message' + currentMessageDivShowing).style.zIndex = (numOfMessageDivs * 10) - 10;
			setOpacity(document.getElementById('message' + currentMessageDivShowing), 100);
			
			//fade in the div to show (showDiv) and fade out the div to hide (currentMessageDivShowing)
			//performing fadeIn and fadeOut simultaneously gives us smoother transitions between text and images
			if (!usingIE6) {
				fadeIn('message' + showDiv, 0);
				fadeOut('message' + currentMessageDivShowing, 100);
			}
			else {
				document.getElementById('message' + showDiv).style.display = 'block';
				document.getElementById('message' + showDiv).style.zIndex = (numOfMessageDivs * 10);
				document.getElementById('message' + currentMessageDivShowing).style.display = 'none';
			}
			
			if (showDiv + 1 > numOfMessageDivs) {
				nextMessageDivToShow = 1;
			}
			else {
				nextMessageDivToShow = ++showDiv;
			}
			
			messageTimeout = setTimeout("changeMessageDiv()", messageSpeed);
			
		}
		
	}
	
}





