PicsMax = idx-1;

PauseFlag = new Array(NumPics);
for (idx = 0; idx < NumPics; idx++) {
	PauseFlag[idx] = 0;
}

var temp;
var timeOutError;
var WhichPic=0;
var StartTime=0;
var EndTime=0;
var LoadTime=0;
var delay=mindelay;
var PicCount=0;
var timeOutHandle;
PicTemp = new Image();

function PicsInit() {
	IdxMax = PicsMax;
	Idx = new Array();
	for (idx = 0; idx <= PicsMax; idx++) {
		Idx[idx] = idx;
	}

	for (idx = 0; idx < NumPics; idx++) {
		document.slide[idx].style.border="thin solid white";
	}

	LoadNewPic();
}


function LoadNewPic() {
	if (++PicCount == (NumPics+1)) delay=earlydelay;
	if (PicCount == (NumPics*2+1)) delay=normdelay;
	//window.status = "WhichPic="+WhichPic+" PicCount="+PicCount+" ending="+ending+" LoadTime="+LoadTime+" delay="+delay;
	PicTemp.src = start+PicNames[RndSelect()]+ending;
	StartTime = new Date();
	PicTemp.onComplete = CheckPic();
}

function CheckPic() {
	if (PicTemp.readyState == undefined || PicTemp.readyState == "complete")
	{
		clearTimeout(timeOutError);
		EndTime = new Date();
		LoadTime = EndTime - StartTime;
		if (LoadTime < delay) timeOutHandle=setTimeout('ChangePic()',(delay-LoadTime))
		else
		{
			timeOutHandle=setTimeout('ChangePic()',mindelay);
			if (LoadTime > maxdelay)	TooSlow();
		}
	}
	else {
		timeOutHandle=setTimeout('CheckPic2()',mindelay);
		timeOutError=setTimeout('KillPic()',toolong);
	}
}

function CheckPic2() {
	if (PicTemp.readyState == undefined || PicTemp.readyState == "complete")
	{
		clearTimeout(timeOutError);
		EndTime = new Date();
		LoadTime = EndTime - StartTime;
		if (LoadTime < delay) timeOutHandle=setTimeout('ChangePic()',(delay-LoadTime))
		else
		{
			timeOutHandle=setTimeout('ChangePic()',mindelay);
			if (LoadTime > maxdelay)	TooSlow();
		}
	}
	else {
		timeOutHandle=setTimeout('CheckPic2()',mindelay);
	}
}

function ChangePic() {
	if (!PauseFlag[WhichPic])
	{
		document.slide[WhichPic].src = PicTemp.src;
		LoadNewPic();
		if (++WhichPic >= NumPics) WhichPic = 0;
	}
	else 
	{
		if (++WhichPic >= NumPics) WhichPic = 0;
		timeOutHandle=setTimeout('ChangePic()',10);
	}
}

function TooSlow() {
	ending=slowending;
}

function RndSelect() {
	if (IdxMax < 0)	InitIdx();
	rnd = Math.round(Math.random()*IdxMax);
	temp=Idx[rnd];
	Idx[rnd] = Idx[IdxMax--];
	return temp;
}

function InitIdx() {
	idx = 0
	for (var i = 0; i <= PicsMax; i++) {
		Idx[idx++] = i;
	}
	IdxMax = PicsMax;
}

function pausePic(which) {
	PauseFlag[which] = !PauseFlag[which];
	if (!PauseFlag[which]) 
		{
			clearTimeout(timeOutHandle);
			document.slide[which].style.border="thin solid white";
			WhichPic = which;
			ChangePic();
		}
	else
		{
			document.slide[which].style.border="thin solid red";
		}
}

function quickchange(which) {
	PauseFlag[which] = false;
	clearTimeout(timeOutHandle);
	document.slide[which].style.border="thin solid white";
	WhichPic = which;
	ChangePic();
}

function speedUp() {
	delay = delay/2;
	self.status="Faster Image Display";
}

function slowDown() {
	delay = delay*2;
	self.status="Slower Image Display";
}

function ClickOnLogo(WhichMouseButton) {
	if ((WhichMouseButton==1)||(WhichMouseButton==0)) {
		slowDown();
	}
	else if (WhichMouseButton==2) {
		speedUp();
	}
}

function KillPic() {
	clearTimeout(timeOutHandle);
	PicNames[temp] = PicNames[PicsMax--];
	LoadNewPic()
}

