// BMS/Chace Client List Fader
// Ben Stineman
// Sep2007
// v0.1

window.addEventListener?window.addEventListener("load",clientFade,false):window.attachEvent("onload",clientFade);

var listFile='clientlist.txt'; //Path to client list text file - one client per line!
var fadeTime=.5; //fade in and fade out transition time in seconds
var holdTime=.8; //client name display time in seconds
var pauseTime=0.5; //pause between client names in seconds

//fadeTime variable - convert to miliseconds, then divide by 100 steps of opacity
fadeTime=(fadeTime*1000)/100;
//holdTime variable - convert to miliseconds
holdTime=holdTime*1000;
//pauseTime variable - convert to miliseconds
pauseTime=pauseTime*1000;

//Random number generator
function random(ceiling) {
	var randomIndex= Math.floor(Math.random()*ceiling);
	return randomIndex;
}

//Main fader function
function clientFade() {
	var AJAX;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		AJAX = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			AJAX = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				AJAX = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser does not support AJAX.");
				return false;
			}
		}
	}

	AJAX.open('POST', listFile, true);
	AJAX.send("");

	AJAX.onreadystatechange = function(){
	   if (AJAX.readyState == 4) {
		var listArray=AJAX.responseText.split('\n'); //After reading in the client list, split it on new line

		var lc=listArray.length-1; //Find how many elements are in the list array and subtract 1 to line up the index
		var o=0; //Set the initial opacity

		var i=random(lc); //Select the first client name at random
		document.getElementById('client1').innerHTML=listArray[i]; //Set the div HTML to the initial client name

                        function fadeOut () {
                                if (o >= 0) {
                                        o-=1;
                                        o2=o/100;
                                        document.getElementById('client1').style.opacity=o2;
                                        document.getElementById('client1').style.MozOpacity=o2;
                                        document.getElementById('client1').style.filter="alpha(opacity=" + (o) + ")";
                                        setTimeout(fadeOut,fadeTime);
                                } else {
					if (i == (lc-1)){
						i=0;
					} else {
						i++;
					}
					document.getElementById('client1').innerHTML=listArray[i];
                                        setTimeout(fadeIn,pauseTime);
                                }
                        }


			function fadeIn () {
				if (o < 100) {
					o+=1;
					o2=o/100;
					document.getElementById('client1').style.opacity=o2;
					document.getElementById('client1').style.MozOpacity=o2;
					document.getElementById('client1').style.filter="alpha(opacity=" + (o) + ")";
					setTimeout(fadeIn,fadeTime);	
				} else {
					setTimeout(fadeOut,holdTime);
				}
			}

			fadeIn(); //Start it the first time
	   }
	}
}