﻿// mcbSlideShow - current version: 0.2
// Author: MOV
// The divs to be faded between should be absolutely positioned
// The container div should therefore be relatively positioned
// Image preloading is recommended - but is not currently supported by this script (although it might be later on).


// Changelog

// 0.2
// Implemented callback via setCallbackFinished

// 0.1
// Made first working version
function mcbSlideShow()
{
	this.setArray = setArray;
	this.setPeriod = setPeriod;
	this.startSlide = startSlide;
	this.setCallbackFinished = setCallbackFinished;
	this.setDuration = setDuration;
	
	
	this.getArray = getArray;
	this.getPeriod = getPeriod;
	this.getDuration = getDuration;		
	this.getCallbackFinished = getCallbackFinished;
	
	var arrSlides = [];
	var intPeriod = 7000;
	var intDuration = 1000;
	var curIndex = -1;
	var counterIndex = 0;
	var cbFinished;
	
	function setArray(array)
	{
		arrSlides = array; 
	}
	function setPeriod(period)
	{
		intPeriod = period;
	}
	function setDuration(duration)
	{
		intDuration = duration;
	}
	function setCallbackFinished(callbackFunction)
	{
		cbFinished = callbackFunction;
	}	

	function getArray()
	{
		return arrSlides;
	}
	function getPeriod()
	{
		return intPeriod;
	}
	function getDuration()
	{
		return intDuration;
	}
	function getCallbackFinished()
	{
		return cbFinished;
	}	
	
	function makeFinishedCallback()
	{
		cbFinished(curIndex,arrSlides.length-1);
	}
	function startSlide()
	{
		if(curIndex>-1)
		{
			if(curIndex<(arrSlides.length-1))
			{
				Effect.Fade(arrSlides[curIndex],{duration:(intDuration/1000)});						
				Effect.Appear(arrSlides[curIndex+1],{duration:(intDuration/1000)});
				curIndex++;
			}else{
				Effect.Fade(arrSlides[curIndex],{duration:(intDuration/1000)});						
				Effect.Appear(arrSlides[0],{duration:(intDuration/1000)});
				curIndex = 0;						
			}
		}else{
			curIndex = 0;
		}
		if(cbFinished)
		{
			setTimeout(makeFinishedCallback,intDuration-1);
		}			
		setTimeout(startSlide,intPeriod);
		counterIndex++;		
	}
}
