// var conf = [ uid, number, interval, duration, [[ 'img11', 'img12', 'img13' ],[ 'img21', 'img22', 'img23' ]]

function t3xheaderslideshow(conf) {
	var me = this;// create self reference
	me.current = 0;  // Current slide
	me.next = 1;  // Next slide
	me.hidden = 1;  // Hidden container
	me.uid = 't3xheaderslideshow-'+conf[0];
	me.number = conf[1];
	me.interval = conf[2];
	me.duration = conf[3];
	me.slides = conf[4];
	me.options = {duration:me.duration,transition:Fx.Transitions.linear};
	me.container = [$(me.uid+'-1'),$(me.uid+'-2')];
	me.img = [$$('#'+me.uid+'-1 img'),$$('#'+me.uid+'-2 img')];
	me.fx = [me.container[0].effect('opacity',me.options),me.container[1].effect('opacity',me.options)];
	me.fx[0].addEvent("onComplete",function(){ me.step(); });
	me.container[0].setStyle('visibility','visible');  // Show container 0
	me.container[1].setStyle('visibility','hidden');  // Hide container 1

	me.init = function() {
		me.load(0,0);  // Init container 0 with slide 0
		me.load(1,1);  // Init container 1 with slide 1
		me.toggle.delay(me.interval,me);
	};

	me.toggle = function() {  // Toggle containers visibility
		me.fx[1-me.hidden].start('1','0');  // Fade OUT
		me.fx[me.hidden].start('0','1');  // Fade IN
	};

	me.step = function() {  // Slide images
		me.container[1-me.hidden].setStyle('visibility','hidden');  // Hide
		me.container[me.hidden].setStyle('visibility','visible');  // Show
		me.hidden = ( me.hidden + 1 ) % 2;  // Toggle
		me.current = ((me.current+1)%me.slides.length);  // Cycle
		me.next = ((me.current+1)%me.slides.length);  // Cycle
		me.load( me.hidden, me.next );
		me.toggle.delay(me.interval,me);
	};

	me.load = function(container,slide) {  // Load slide into container
		for (var i = 0 ; i < me.number ; i++) {
			// If image is present, load it
			if(me.slides[slide][i]) {
				me.img[container][i].src = me.slides[slide][i];
			} else {
				break;
			}
		}
	};

	me.init();
};
