/////////////////////////////////////////////////////////
//						                  //
//	SlideShow Script			                 //
//	By Uniware Internet Services	                //
//                                                 //
//	Depending on alphaAPI by Chrisken           //
//	http://ck.utacm.org/alphaapi.phtml         //
//					                  //
/////////////////////////////////////////////////

  var CurrentPict;
  var TotalPicts;
  var PictBoxes;
  var Status = "Playing";
  var PictBig;
  var TextBox;
  var StatusBox;
  var Picts;
  var Texts;
  var Offset;
  var WaitForBigFadeHandle;
  var WaitForTextFadeHandle;
  var BigImgAlpha;
  var TextBoxAlpha;
  var AnimationHandle;
  var Delay;
  var RowWidth;
  var ImagesPath = "../images";

  function InitSlideshow(PictArray, TextArray, PictDelay, PictHolders, BigImageID, TextBoxID, StatusID, RowPicts)
  {
	CurrentPict = 1;
	Picts = PictArray;
	Texts = TextArray;
	PictBoxes = PictHolders;
	PictBig = BigImageID;
	TextBox = TextBoxID;
	StatusBox = StatusID;
	RowWidth = RowPicts;
	TotalPicts = Picts.length;
	Offset = 0;
	CurrentPict = 1;
	BigImgAlpha = new alphaAPI(PictBig, 20,20,99,1,null,2);
	BigImgAlpha.norepeat();
	TextBoxAlpha = new alphaAPI(TextBox, 20,20,99,1,null,5);
	TextBoxAlpha.norepeat();
	SetStatus("playing", CurrentPict, TotalPicts);
	InitPicts(CurrentPict - 1);
	document.getElementById(PictBig).src = Picts[CurrentPict-1];
	var i = CurrentPict;
	while(Texts[i - 1] == "" && i > 0)
	{
		i--;
	}
	if(TextBox != "")
	{
		document.getElementById(TextBox).innerHTML = Texts[i - 1];
	}
	Delay = PictDelay;
	AnimationHandle = setInterval("Update();", Delay);
  }

  function CalcOffset(Pict)
  {
	if(Pict <= PictBoxes.length)
	{
		Offset = 0;
	}
	else
	{
		Offset = Math.ceil((Pict - PictBoxes.length) / RowWidth)*RowWidth;
	}
  }

  function Update()
  {
	removeSelection();
	CurrentPict = (CurrentPict % TotalPicts) + 1;
	CalcOffset(CurrentPict);
	addSelection();
	InitPicts();
	UpdateBig();
	UpdateText();
	DisplayStatus();
	if(CurrentPict == 1 && window.EndAnim)
	{
		EndAnim();
	}
  }

  function UpdateText()
  {
	if(TextBox == "") return false;

	var i = CurrentPict;
	while(Texts[i - 1] == "" && i > 0)
	{
		i--;
	}
	if(Texts[CurrentPict-1] != Texts[i - 1].toUpperCase() && Texts[CurrentPict-1] != "")
	{
		TextBoxAlpha.fadeOut();
		WaitForTextFadeHandle = setInterval("WaitForFade(TextBoxAlpha, ContinueUpdateText);", 20);
	}
  }

  function ContinueUpdateText()
  {
	clearTimeout(WaitForTextFadeHandle);
	var i = CurrentPict;
	while(Texts[i - 1] == "" && i > 0)
	{
		i--;
	}
	document.getElementById(TextBox).innerHTML = Texts[i - 1];
	TextBoxAlpha.fadeIn();
  }

  function SelectImage(Pict)
  {
	while(Pict + Offset <= 0)
	{
		Pict += TotalPicts;
	}
	while(Pict + Offset > TotalPicts)
	{
		Pict -= TotalPicts;
	}
	removeSelection();
	CurrentPict = Pict + Offset;
	if(Pict <= 0 || Pict > PictBoxes.length)
	{
		CalcOffset(CurrentPict);
	}
	addSelection();
	InitPicts();
	BigImgAlpha.stop();
	UpdateBig();
	UpdateText();
	DisplayStatus();
	StopAnim(document.getElementById("StopButton"));
  }


  function WaitForFade(Api, func)
  {
	if(Api.getTrans() <= 5)
	{
		func();
	}
  }
  
  function ContinueUpdateBig()
  {
	clearTimeout(WaitForBigFadeHandle);
	document.getElementById(PictBig).src = Picts[CurrentPict-1];
	BigImgAlpha.fadeIn();
  }

  function UpdateBig()
  {
	BigImgAlpha.fadeOut();
	WaitForBigFadeHandle = setInterval("WaitForFade(BigImgAlpha, ContinueUpdateBig);", 20);
  }

  function Play(ButtonObj)
  {
	SetStatus("playing", CurrentPict, TotalPicts);
	AnimationHandle = setInterval("Update();", 5000);
	BigImgAlpha.stop();
	Update();
	ButtonObj.src = ImagesPath + "/stop.gif";
	ButtonObj.onclick = function() { StopAnim(this); }
	ButtonObj.alt = "Stop slideshow";
	document.getElementById("FastBackButton").src = ImagesPath + "/sbg.gif";
	document.getElementById("FastBackButton").onclick = function() { return false; }
	document.getElementById("BackButton").src = ImagesPath + "/fbg.gif";
	document.getElementById("BackButton").onclick = function() { return false; }
	document.getElementById("ForwardButton").src = ImagesPath + "/ffg.gif";
	document.getElementById("ForwardButton").onclick = function() { return false; }
	document.getElementById("FastForwardButton").src = ImagesPath + "/sfg.gif";
	document.getElementById("FastForwardButton").onclick = function() { return false; }
  }

  function StopAnim(ButtonObj)
  {
	SetStatus("stopped", CurrentPict, TotalPicts);
	clearTimeout(AnimationHandle);
	if(ButtonObj != null)
	{
		ButtonObj.src = ImagesPath + "/play.gif";
		ButtonObj.onclick = function() { Play(this); }
		ButtonObj.alt = "Play slideshow";
	}
	document.getElementById("FastBackButton").src = ImagesPath + "/sb.gif";
	document.getElementById("FastBackButton").onclick = function() { SelectImage(1 - Offset); }
	document.getElementById("BackButton").src = ImagesPath + "/fb.gif";
	document.getElementById("BackButton").onclick = function() { SelectImage(CurrentPict - 1 - Offset); }
	document.getElementById("ForwardButton").src = ImagesPath + "/ff.gif";
	document.getElementById("ForwardButton").onclick = function() { SelectImage(CurrentPict + 1 - Offset); }
	document.getElementById("FastForwardButton").src = ImagesPath + "/sf.gif";
	document.getElementById("FastForwardButton").onclick = function() { SelectImage(TotalPicts - Offset); }
  }

  function SetStatus(Stat, Current, Total)
  {
	Status = Stat;
	CurrentPict = Current;
	TotalPicts = Total;
	DisplayStatus();
  }

  function DisplayStatus()
  {
	if(StatusBox != "")
	{
		document.getElementById(StatusBox).innerHTML = Status + ": "+CurrentPict+" / "+TotalPicts;
	}
  }

  function removeSelection()
  {
	var aa = new alphaAPI(PictBoxes[CurrentPict - Offset - 1], 50,50,50,99,null,2);
	aa.setTrans(50);
  }

  function addSelection()
  {
	var aa = new alphaAPI(PictBoxes[CurrentPict - Offset - 1], 50,50,50,99,null,2);
	aa.setTrans(100);
  }

  function InitPicts()
  {	
	var i;
	
	while(TotalPicts - Offset < 0) Offset--;
	for(i = 0; i < Math.min(TotalPicts - Offset, PictBoxes.length); i++)
	{
		document.getElementById(PictBoxes[i]).src = Picts[i + Offset];
	}
	for(i = Math.min(TotalPicts - Offset, PictBoxes.length); i < PictBoxes.length; i++)
	{
		document.getElementById(PictBoxes[i]).src = ImagesPath + "/nixel.gif";
	}
  }
