// JavaScript Document

// Author: Sebastian Friedrich (i. A. RUSKA, MARTIN, ASSOCIATES)
// Mail: friedrich@ruskamartin.de
// Web: http://ruskamartin.de

$(function(){
	function validateMail(element) {
		var condition = /\b[A-Za-z0-9._%+-]+@(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,4}\b/;
		if (condition.test($(element).val())) {
			// valid
			$(element).css({
				"color":"#2e4a82"
			});
			return true;
		} else {
			// invalid
			$(element).css({
				"color":"#cc071e"
			});
			return false;
		};
	}
	
	function allowSubmit() {
		var loaderBin = $("<div></div>");
		var resourceURI = $("#recommendation form:first").attr("action");
		var formData = new Object();		
		
		validMails = true;
		$("#FromEMailAddress, #ToEMailAddress").each(function() {
			validMails = validateMail(this) && validMails;
		});
		
		if (validMails) {
			// Daten sammeln
			formData.FromName = $("#recommendation #FromName").val();
			formData.FromEMailAddress = $("#recommendation #FromEMailAddress").val();
			formData.ToEMailAddress = $("#recommendation #ToEMailAddress").val();
			formData.Text = $("#recommendation #Text").val();
			formData.Code = $("#recommendation #Code").val();
			// webEdition Fields
			formData.submit = $("#recommendation input[name='submit']").val();
			formData.URL = $("#recommendation input[name='URL']").val();
			
			// Senden und Serverantwort auswerten
			loaderBin.load(resourceURI + " #recommendation", formData, function() {
				if ($(this).find("input[type='submit']").length == 0) {
					// Formular erfolgreich gesendet, Form nach Timeout schließen
					$("#recommendation").replaceWith($(this).find("#recommendation"));
					setTimeout(function() {	restoreSite(); }, 3000);
				} else {
					// Ungültige Eingabe, Korrektur durch Benutzer
					$("#captcha").replaceWith($(this).find("#captcha"));
					$("#captcha img").attr("src", $("#captcha img").attr("src") + "&nc=" + Math.floor(Math.random() * 10001));
				};
			});
		};
		
		loaderBin = undefined;
		return validMails;
	}
	
	function restoreSite() {
		// restore site on abort
		$("#recommendation")
			.fadeOut(250, function() { 
				$(this).parent().remove(); 
				$(".multiple-forms").removeClass("multiple-forms").children().css("float","none");
				$("a.recommendation").fadeIn(500);
			});
	}

	// Dokument anpassen
	$("body").wrapInner("<div></div>");
	
	// dynamisches Nachladen des Formulars		
	$("a.recommendation").click(
		function(e) {
			var resourceURI = this.href;
			e.preventDefault();
			
			$("body")
				.children(":first")
				.addClass("multiple-forms")
				.prepend($("<div></div>")
					.hide()
					.css({
						marginRight:"12px"
					})
					.load(resourceURI + " #recommendation", 
						function() {
							// JS-Actions
							$("a.button-close").click(
									function(e) { 
									restoreSite();
									e.preventDefault();
								});
								
							// Email-Validation
							$("#FromEMailAddress, #ToEMailAddress").blur(function() { validateMail(this); });
							
							$("form").submit(
								function(e) {
									allowSubmit();
									e.preventDefault();
								});
						})
					.fadeIn(1000, function() {
						// IE workaround for prevent submitting if necessary
						if ($.browser.msie) {
							$("input[type='submit']").replaceWith("<a href='#' class='button-submit'>Senden</a>");
							$(".button-submit").click(function() {
								allowSubmit();
								return false;
							});
						};
					}))
				.children()
				.css({
					"float":"left"
				});
			
			// Link ausblenden, damit nicht zwei Formulare geöffnet werden können
			$(this).fadeOut(500);
		});
});
