// 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(ceID) {
	if (typeof(ceID) == "undefined") {
		$(".aa2_showonly").each(function () {
			var ceElem = $(this).parents('[id*="ce_"]').attr("id");
			if (typeof(ceElem) != "undefined") {
				var ceParts = ceElem.split("_");
				var ceID = ceParts[1];
				aa2_showonly( ceID );
			}
		});
	}
	$('#ce_' + ceID + ' .aa2_showonly').each(function (index) {
		var elems = $(this).children();
		for (var i=0; i<elems.length; i++) {
			$(elems[i]).show();
			if ( i >= $(".aa2_showonly_count").attr("rel")) {
				$(elems[i]).hide();
			}
		}
	});
	if ( $('#ce_' + ceID + ' .aa2_showonly').is('aa2_shuffle') ) {
		aa2_shuffle(ceID);
	}
}

// ===> Durcheinanderrühren
// function aa2_shuffle - 04.11.2010
// mischelt mit css markierte elemente durcheinander
// äusseres element mit klasse aa2_schuffle markieren
function aa2_shuffle(ceID) {
	if (typeof(ceID) == "undefined") {
		$(".aa2_shuffle").each(function () {
			var ceElem = $(this).parents('[id*="ce_"]').attr("id");
			if (typeof(ceElem) != "undefined") {
				var ceParts = ceElem.split("_");
				var ceID = ceParts[1];
				aa2_shuffle( ceID );
			}
		});
	}
	$('#ce_' + ceID + ' .aa2_shuffle').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(ceID); // neu geschüttelte elemente wieder richtig beklassen
		}
		if ( $(this).is(".aa2_oddeven") ) {
			aa2_oddeven(ceID); // 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(ceID) {
	if (typeof(ceID) == "undefined") {
		$(".aa2_firstlast").each(function () {
			var ceElem = $(this).parents('[id*="ce_"]').attr("id");
			if (typeof(ceElem) != "undefined") {
				var ceParts = ceElem.split("_");
				var ceID = ceParts[1];
				aa2_firstlast( ceID );
			}
		});
	}
	$('#ce_' + ceID + ' .aa2_firstlast').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(ceID) {
	if (typeof(ceID) == "undefined") {
		$(".aa2_oddeven").each(function () {
			var ceElem = $(this).parents('[id*="ce_"]').attr("id");
			if (typeof(ceElem) != "undefined") {
				var ceParts = ceElem.split("_");
				var ceID = ceParts[1];
				aa2_oddeven( ceID );
			}
		});
	}
	$('#ce_' + ceID + ' .aa2_firstlast').each( function() {
		// oddeven entfernen
		$(".aa2_firstlast .odd").removeClass("odd");
		$(".aa2_firstlast .even").removeClass("even");
		// oddeven neu setzen
		$(".aa2_oddeven").children().filter(":visible:odd").addClass("odd");
		$(".aa2_oddeven").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() {
	$(".aa2_again").each( function() {
		var aa2_content = $(this).attr('rel').split(",");
		var ceElem = $(this).parent('[id*="ce_"]').attr("id");
		var ceParts = ceElem.split("_");
		var ceID = ceParts[1];
		var befehlname = aa2_content[0];
		var befehl = befehlname+"(" + ceID + ")"
		var zeit = parseInt(aa2_content[1]*1000);
		eval("aa2_interval_" + befehlname + "_" + ceID + " = window.setInterval(\"window[" + befehl + "]\", zeit)");
	});
}
