/*
	
	script: spotBox
	version: 0.1-alpha
	author: SkyKnight -> http://skyknight.info
	license: Creative Commons Attribution 2.5
	date: 25-03-2008
	
	*/

// config

var spotId = "spotbox"; 								// id of main spotBox container
var spotItemClass = "spotitem"; 				// class of items in container
var spotInterval = 20000; 								// interval to show next item
var spotPagesListClass = "spotpages";		// class of <ul> which contain list of items
var spotPagesId = "spotpage";						// id for items
var spotAutoChange = true;								// show next page automaticly?

// globals
var spotContainer;
var spotPages;
var spotPagesList;
var spotTimer;

var initSpot = function()
{
  
  spotContainer = $(spotId);
  if(spotContainer == null || spotContainer.length == 0)
  	return;
  
  spotPages = $$('.'+spotItemClass);

  if(spotPages.length == 0)
  	return;
	
	spotPagesList = document.createElement('ul');
  Element.extend(spotPagesList);
  spotPagesList.addClassName(spotPagesListClass);
  
  for(i=0;i<spotPages.length;i++)
  {
		spotPagesListItem = document.createElement('li');
		if(i==0)
			spotPagesListItem.className = "current";
		spotPagesListItemA = document.createElement('a');
		spotPagesListItemA.innerHTML = i+1;
		spotPagesListItemA.href = "#";
		Event.observe(spotPagesListItemA, 'click', spotClickChange, false);
		spotPagesListItemA.onclick=function(){return false;}
		spotPagesListItem.appendChild(spotPagesListItemA);
		spotPagesList.appendChild(spotPagesListItem);
		spotPages[i].id = spotPagesId + i;
	}
	spotContainer.appendChild(spotPagesList);
	spotPages[0].style.display = "block";
	startTime();
}

var spotChange = function(to)
{
  from = spotPagesList.getElementsByClassName("current")[0].getElementsByTagName("a")[0].innerHTML;  
  if(from == to || from > spotPages.length || to > spotPages.length || from == null)
  	return;
 	new Effect.Fade(spotPagesId + (from-1));
 	spotPagesList.getElementsByClassName("current")[0].className = "";
 	spotPagesList.getElementsByTagName("li").item(to-1).className = "current";
 	setTimeout("Effect.Appear('"+spotPagesId+(to-1)+"', {duration: 2.5})", 990);
}

var spotClickChange = function(n)
{
  stopTime();
  spotChange(Event.element(n).innerHTML);
  startTime();
}

var spotNext = function()
{
	stopTime();
  from = spotPagesList.getElementsByClassName("current")[0].getElementsByTagName("a")[0].innerHTML;
  to = (from >= spotPages.length) ? 1 : parseInt(from) + 1;
  spotChange(to);
  startTime();
}

var startTime = function()
{
  if(spotAutoChange)
  	spotTimer = setTimeout("spotNext()", spotInterval);
}

var stopTime = function()
{
  if(spotAutoChange)
  	clearTimeout(spotTimer);
}

Event.observe(window, 'load', initSpot, false);

