// Alle Funktionen, die das jQuery-Framework nutzen, koennen hier rein


// Alles, was hier steht, wird erst ausgefuehrt nachdem das DOM
// vollstaendig geladen ist
 
$(document).ready(function() {
	

	/*****************************************/
	/*******  SHOP  **************************/
	
	// Ist beim Laden die Zahlart schon auf "Einzug" eingestellt,  DOM-Objekt
	// #einzugsfeld gleich zeigen
	if ($("#zahlart option:selected").val() == 9) {
		$("#einzugsfeld").css("display","block");
	} else {
		$("#einzugsfeld").css("display","none");
	}
	
	
	/**
	 * Eventlistener fuer Laenderauswahl #fStaat: aendert bei Auswahl != DE
	 * Zahlart auf "Ueberweisung", gibt Behandlung der Bankdaten dann an
	 * togglePaymentVisibilty weiter (sichtbar/ nicht sichtbar)
	 * wirksam fuer:
	 * - shop.php
	 * - spenden.php
	 */
	/*	vorruebergehend aus
	$('#fStaat').change(function() {
		if ($('#fStaat option:selected').val() != 'DE') {
			$("#zahlart").val(1).attr("disabled", "disabled");
		} else {
			$("#zahlart").val(9).attr("disabled", false);
		}
		
		togglePaymentVisibilty();
	});
	*/
	
	
	/**
	 * Eventlistener fuer Select #zahlart: gibt Behandlung der Bankdaten
	 * dann an togglePaymentVisibilty weiter (sichtbar/ nicht sichtbar).
	 * wirksam fuer:
	 * - shop.php
	 * - spenden.php
	 */
	$("#zahlart").change(function() {
		// vorruebergehend aus
		// if ($('#fStaat option:selected').val() != undefined
		// && $('#fStaat option:selected').val() != 'DE')
		//	$("#zahlart").val(1);
			
		togglePaymentVisibilty();
 	});
 	
 	
 	/**
 	 * Eventlistener fuer Adressform im Shop: prueft Clientseitig, ob Bankdaten
 	 * angegeben sind, wenn als Zahlart "Einzug" gewaehlt ist
 	 */
	$("#shop_adress").submit(function() {
		var submitForm = true;
		if ($("#zahlart option:selected").val() == 9) {
			$("#einzugsfeld :input").each(function() {
				if ($(this).val() == '') {
					alert("Zum Einzug von Ihrem Konto fehlen die vollständigen Daten!");
					submitForm = false;
					$(this).focus();
					return false;
				}
			});
		}
		return submitForm;
	});
	
	
	/**
	 * togglePaymentVisibilty(): Zeigt je nach aktuellem Wert von #zahlart
	 * entweder DOM-Objekt #einzugsfeld oder versteckt es und loescht
	 * evtl. eingetragene Werte aus Input-Feldern.
	 * Fuegt ausserdem CSS-Klassen fuer Validierung hinzu bzw. entzieht sie.
	 * Wird durch Change-Event von #zahlart und #fStaat aufgerufen.
	 */
	var togglePaymentVisibilty = function() {
		if ($("#zahlart option:selected").val() == 1) {
			$("#einzugsfeld").hide("slow")
				.find(':input')
					.filter(":not(:radio)")
						.each(function() {
							$(this).removeClass('is_required').val('');
						});
			$('#bankverbindung').show("slow");
		} else {
			$("#einzugsfeld").show("slow")
				.find(':input')
					.filter(":not(:radio)")
						.each(function() {
							$(this).addClass('is_required');
						});
			$('#bankverbindung').hide("slow");
		}
	}
	
	/*******  ENDE SHOP  *********************/
	/*****************************************/
	
	
	/**
	 * Eventhandler fuer spenden.php
	 * 
	 * !! Funktionalitaet fuer Bankeinzug, Wohnsitz im Ausland etc.
	 * schon oben definiert!! (siehe Shop)
	 */
	$('input:radio[name=urkunde]').change(function() {
		$('#iUrkunde').toggle('slow').val('');
		
		$(this).val() == 0	? $('#fUrkunde').removeClass('is_required').val('')
							: $('#fUrkunde').addClass('is_required');
	});
	
	/**
	 * Eventhandler fuer Formulare: ueberprueft bei submit mit entsprechenden
	 * Klassen gekennzeichnete Felder auf korrekten Inhalt
	 * (siehe jQuery-Plugin /lib/js/formvalidator/*)
	 */
	$('#spendenForm, #rechnung, #aktionForm').FormValidate({
		phpFile: '',
		ajax: false,
		validCheck: true
	});
	
	// Eventhandler "showScroll" fuer selektierte Objekte
	// an Event "submit" binden
	$('#spendenForm').bind('submit', function(e) {
		var myId = '#' + this.id;
		$(this).showScroll($(myId));
	})
	
	/**
	 * Entfernt aus einem uebergebenen String alle evtl. vorhandenen
	 * Zeichen, die keine arabischen Ziffern sind (0-9)
	 * 
	 * @param String string
	 * @return Integer 
	 */
	var getNumeric = function(string) {
		return string.replace(/[^0-9]*/gi, '');
	}
	
	/**
	 * Element mit Klasse "toggleFormDisplay" aendert auf Klick Sichtbarkeit
	 * eines Formulars #contact.
	 * Hier nur fuer TAF-Formulare implemenmtiert. U.U. verallgemeinern...
	 */
	$('.toggleFormDisplay').click(function() {
		$('#contact').show('slow');
		return false;
	});
	
});




/**
 * Eventhandler zeigt Element an und scrollt
 * an die Position des uebergebenen Elements
 * 
 * @param String CSS-ID des Zielelements
 */
$.fn.showScroll = function(destination) {
    var dest = $(destination).offset().top;
    jQuery(this).show(1, function() {
		$("html:not(:animated), body:not(:animated)")
			.animate({ scrollTop: dest}, 400, "swing" );
	});
};

