/**
 * Datenklasse für eine Spalte mit Bildern
 */
function ImageRow(row)
{
	/** Array mit allen Bildern einer Spalte */
	this.images = new Array();
	/** IMG-Element, in welchem der Bildwechsel stattfinden soll */
	this.elm = document.getElementById("IMG_"+row);
	/** Zähler für das aktuell angezeigte Bild */
	this.count = 0;
	/** Schalter, ob Bildwechsel stattfinden soll */
	this.go = true;
}

/**
 * Verwaltungsklasse zum periodischen Wechseln von Bildern
 *
 * @param rows Anzahl der Spalten
 * @param delay Verweilzeit für ein Bild
 * @param startbilder Array mit Startbildern für jede Spalte
 */
function ImageChanger(rows, delay, min, startbilder)
{
	/** Testausgabe anzeigen */
	var SHOW_INFO = false;
	/** Array aus ImageRow-Objekten */
	var imageRows = new Array();

	/**
	 * Initialisierungsmethode
	 */
	function init()
	{
		var imgID;
		var imgRow;
		var i;

		// für jede Spalte eine Instanz der ImageRow-Klasse erzeugen
		for (i = rows; i > 0; i--) {
			imageRows[i] = new ImageRow(i);
		}

		// Bilder nach ID einlesen
		for (i = document.getElementsByTagName("img").length-1; i >= 0 ; i--) {
			imgID = document.getElementsByTagName("img")[i].id;
			if (imgID.search(/^[1-9]_/) > -1)
				imageRows[imgID.slice(0,1)].images.push(document.getElementsByTagName("img")[i]);
		}

		// wenn weniger als MIN Bilder in einer Spalte sind,
		// keinen Bildwechsel durchführen
		for (i = rows; i > 0; i--) {
			imgRow = imageRows[i];
			if (imgRow.images.length < min)
				imgRow.images = new Array();
		}

		// für jede Rubrik das Startbild eintragen
		// (da es am Ende des Arrays steht, wird mit ihm begonnen)
		for (i = rows; i > 0; i--) {
			imgRow = imageRows[i];
			imgRow.images.push(new Image());
			imgRow.images[imageRows[i].images.length-1].src = startbilder[i];
			imgRow.count = imgRow.images.length-1;

			// wenn nur ein Bild vorhanden ist,
			// muss in der Spalte nichts gewechselt werden
			if (imgRow.images.length == 1) {
				imgRow.go 		= false;
				imgRow.elm.src	= imgRow.images[0].src;
			}
		}

		// Testausgabe
		if (SHOW_INFO) {
			var info, j;

			for (i = rows; i > 0; i--) {
				imgRow 	= imageRows[i];
				info 	= "Spalte "+i+"\n";
				info 	= info + imgRow.images.length+" Bilder\n";
				info 	= info + "Bildwechsel: "+imgRow.go+"\n\n";

				for (j = 0; j < imgRow.images.length; j++)
					info = info + imgRow.images[j].src + "\n";

				alert(info);
			}
		}
	}

	/**
	 * Eigentliche Bildwechselmethode
	 */
	this.go = function()
	{
		var thisObj = this;
		var imgRow, i;

		for (i = rows; i > 0; i--) {
			imgRow = imageRows[i];

			if (imgRow.go) {
				imgRow.elm.src 	= imgRow.images[imgRow.count].src;
				imgRow.count	= (imgRow.count == imgRow.images.length-1) ? 0 : imgRow.count+1;
			}
		}

		setTimeout(function() { thisObj.go() }, delay);
	}

	// Initialisierungsmethode ausführen
	init();
}