// gibt nützliche kleine hilfestellungen für das design der seite
// created by zber@webcenter@IAS@ZHAW 04.11.2010

// nur aktuelles content-Element (ce_) mixen

// ===> beim Starten ausführen
// diese funktion findet selbständig die nötigen funktionen und ruft sie aus
// diese funktion muss auf "ready" ausgeführt werden
$(document).ready( function () {
	// return; // debug ruhe
	aa2_shuffle();
	aa2_showonly();
	aa2_firstlast();
	aa2_oddeven();
	aa2_again();
	// css durchsuchen nach trigger "aa2_"
		// funktionsnamen eruieren
		// funktion aufrufen
});

// ===> Wenn einige ausgeblendet werden müssen
// function aa2_showonly - 04.11.2010
// blendet alle überzähligen elemente aus
// das element aa2_showonly_count soll den Funktionsnamen und Timeout in Sekunden im rel enthalten
function aa2_showonly(nrOfElem) {
	if (typeof(nrOfElem) == "undefined") {
		nrOfElem = 0;
		$(".aa2_showonly").each(function () {
			aa2_showonly( nrOfElem );
			nrOfElem++;
		});
	} else {
		$('.aa2_showonly:eq('+nrOfElem+')').each(function (index) {
			var elems = $(this).children();
			for (var i=0; i<elems.length; i++) {
				$(elems[i]).show();
				if ( i >= $(this).parent().parent().find(".aa2_showonly_count").attr("rel") ) {
					$(elems[i]).hide();
				}
			}
		});
		if ( $('.aa2_showonly:eq('+nrOfElem+')').is('aa2_shuffle') ) {
			aa2_shuffle(nrOfElem);
		}
	}
}

// ===> Durcheinanderrühren
// function aa2_shuffle - 04.11.2010
// mischelt mit css markierte elemente durcheinander
// äusseres element mit klasse aa2_schuffle markieren
function aa2_shuffle(nrOfElem) {
	if (typeof(nrOfElem) == "undefined") {
		nrOfElem = 0;
		$(".aa2_shuffle").each(function () {
			aa2_shuffle( nrOfElem );
			nrOfElem++;
		});
	} else {
		$('.aa2_shuffle:eq('+nrOfElem+')').each(function () {
			var elems = $(this).children();
			elems.sort( function() { return ( Math.round(Math.random() )-0.5); } );
			$(this).empty();
			for (var i=0; i<elems.length; i++) {
				$(this).append(elems[i]);
			}
			if ( $(this).is(".aa2_firstlast") ) {
				aa2_firstlast(nrOfElem); // neu geschüttelte elemente wieder richtig beklassen
			}
			if ( $(this).is(".aa2_oddeven") ) {
				aa2_oddeven(nrOfElem); // neu geschüttelte elemente wieder richtig beklassen
			}
		});
	}
}

// ===> erste und letzte markieren
// function aa2_firstlast - 04.11.2010
// kennzeichnet mit css markierte elemente als first/last
// äusseres element mit klasse aa2_firstlast markieren
function aa2_firstlast(nrOfElem) {
	if (typeof(nrOfElem) == "undefined") {
		nrOfElem = 0;
		$(".aa2_firstlast").each(function () {
			aa2_firstlast( nrOfElem );
			nrOfElem++;
		});
	} else {
		$('.aa2_firstlast:eq('+nrOfElem+')').each( function() {
			// firstlast entfernen
			$(this).children(".first").removeClass("first");
			$(this).children(".last").removeClass("last");
			// firstlast neu setzen
			$(this).children().filter(":visible:first").addClass("first");
			$(this).children().filter(":visible:last").addClass("last");
		});
	}
}

// ===> gerade und ungerade markieren
// function aa2_oddeven - 04.11.2010
// kennzeichnet mit css markierte elemente als odd/even
// äusseres element mit klasse aa2_oddeven markieren
function aa2_oddeven(nrOfElem) {
	if (typeof(nrOfElem) == "undefined") {
		nrOfElem = 0;
		$(".aa2_oddeven").each(function () {
			aa2_oddeven( nrOfElem );
			nrOfElem++;
		});
	} else {
		$('.aa2_oddeven:eq('+nrOfElem+')').each( function() {
			// oddeven entfernen
			$('.aa2_oddeven:eq('+nrOfElem+') .odd').removeClass("odd");
			$('.aa2_oddeven:eq('+nrOfElem+') .even').removeClass("even");
			// oddeven neu setzen
			$('.aa2_oddeven:eq('+nrOfElem+')').children().filter(":visible:odd").addClass("odd");
			$('.aa2_oddeven:eq('+nrOfElem+')').children().filter(":visible:even").addClass("even");
		});
	}
}

// ==> interval setzen
// function aa2_again - 04.11.2010
// wiederholt eine bestimmte aktion nach x sekunden
// das element aa2_again soll den Funktionsnamen und Timeout in Sekunden im rel enthalten
function aa2_again() {
	nrOfElem = 0;
	$(".aa2_again").each( function() {
		var aa2_content = $(this).attr('rel').split(",");
		var befehlname = aa2_content[0];
		var befehl = befehlname+"(" + nrOfElem + ")"
		var zeit = parseInt(aa2_content[1]*1000);
		eval("aa2_interval_" + befehlname + "_" + nrOfElem + " = window.setInterval(\"window[" + befehl + "]\", zeit)");
		nrOfElem++;
	});
}
