/*
Script:
	Blackbox v0.11 beta

Author:
	Yichuan Shen, <http://labs.hostsen.net/>

License:
	MIT-style license
*/

var blackboxClass = new Class({
	options: {
		bgcolor: '#ffffff',
		duration: 1000,
		height: 210,
		start: 1,
		wait: 6000,
              circle: 1,  /*ab welches Bild nächste mal*/
              anzahl:4,  /*Anzahl der Elemente */
              schleifen:2 /*anzahl der Schleifen : 0 - unbegrenzt*/ 
	},
       
       schleife: 0,

	initialize: function(elements, options) {
		this.setOptions(options)

		elements.each(function(ulel) { // ulel = ul-Element
			ulel.setStyle('height', this.options.height);

			ulel.setStyles({
				position: 'relative'
			});

			ulel.getChildren().each(function(liel, i) { // liel = li-Element
				liel.addClass('bit' + ++i);
				liel.setStyles({
					backgroundColor: this.options.bgcolor,
					display: 'block',
					opacity: 0,
					overflow: 'hidden',
					position: 'absolute',
					top: 0,
					right: 0,
					bottom: 0,
					left: 0,
					zIndex: 1
				});

				// if first
				if(i == this.options.start) {
					liel.setStyles({
						opacity: 1,
						zIndex: 2
					});
				// if second
				} else if(i == this.getNextItem(ulel, this.options.start)) {
					liel.setOpacity(1);
				}
			}.bind(this));

			this.start.delay(this.options.wait, this, [ulel, this.options.start]);
		}.bind(this));
	},

	start: function(el, i) { // el = ul-Element
		var cur = el.getElement('.bit' + i);
		var next = this.getNextItem(el, i);

		cur.effect('opacity', {duration: this.options.duration}).start(0).chain(function() {
			cur.setStyle('z-index', 1);

			el.getElement('.bit' + next).setStyle('z-index', '2');
			el.getElement('.bit' + this.getNextItem(el, next)).setOpacity('1');
			if(this.options.schleifen!=0 && this.schleife==this.options.schleifen && i==this.options.anzahl) this.stop(el,this.options.circle);
			else this.start.delay(this.options.wait, this, [el, next]);
		}.bind(this));
	},

	stop: function(el, i) { // el = ul-Element
                 this.options.wait = 10000000000;
                 for(j=1;j<=4;j++){
  		  var cur = el.getElement('.bit' + j);
		  cur.setStyle('z-index', 1);
                 }
		el.getElement('.bit' + i).setStyle('z-index', '2');
		el.getElement('.bit' + i).setOpacity('1');
	},

	getNextItem: function(el, i) {
		var bool;

		el.getChildren().each(function(liel) {
			if(liel.hasClass('bit' + (i+1))) {
				bool = true;
			}
		});

		// if next item exists
		if(bool) {
			return i+1;
		// else return to the first item
		} else {
                     this.schleife ++;
			return this.options.circle;
//			this.stop(el,circle);
		}
	}
});
blackboxClass.implement(new Options);