/*
	$LastChangedDate: 2008-09-18 16:15:51 +0200 (Thu, 18 Sep 2008) $
	$LastChangedRevision: 94 $
	$LastChangedBy: tima $
*/

// Kommentar-Formular dynamisieren

//Kommentarbereich
function isNotEmail(element)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
	return !(filter.test($(element).val())) ? "true" : "false";
}

function isEmpty(element)
{
	return ($(element).val() == '') ? "true" : "false";
}

function registerErrorHandling(element_selector, errormsg_selector, condition)
{
	$(element_selector).attr("valid",!condition(element_selector));
	$(element_selector).attr("errormsg_selector",errormsg_selector);
	
	var validatorFunc = function () {
		if(condition(this) == "true")
		{
			$(this).attr("valid", "false");
			$(errormsg_selector).slideDown();
		}
		else
		{
			$(this).attr("valid", "true");
			$(errormsg_selector).slideUp();
		}
	}
	
	$(element_selector).keyup(validatorFunc);
	$(element_selector).focus(validatorFunc);
	$(element_selector).blur(validatorFunc);
}

function initCommentForm()
{
	//Events registrieren
	if($('#commentform').length > 0)
	{
		registerErrorHandling('#commentform p.name input','#commentform p.name span.error',isEmpty);
		registerErrorHandling('#commentform p.email input','#commentform p.email span.error',isNotEmail);
		registerErrorHandling('#commentform p.text textarea','#commentform p.text span.error',isEmpty);
	
		$('#commentform button.submitbutton').click(function() {
			form_valid = "true";
			form = $('#commentform form').get(0);
			form.noAjax.value = 'false';
			for(i=0; i<form.elements.length && (form_valid == "true"); i++)
			{
				if($(form.elements[i]).attr("valid") != null)
				{
					var errormsg_selector = $(form.elements[i]).attr("errormsg_selector");
					if($(form.elements[i]).attr("valid") == "true")
					{
						$(errormsg_selector).slideUp();
					}
					else
					{
						$(errormsg_selector).slideDown();
					}
					form_valid = $(form.elements[i]).attr("valid");
				}
			}
			if(form_valid == "true")
			{
				var formData = new Object();
				formData.name = $('#commentform input[name=name]').val();
				formData.email = $('#commentform input[name=email]').val();
				formData.url = $('#commentform input[name=url]').val();
				formData.text = $('#commentform textarea[name=text]').val();
				formData.homepage = $('#commentform p.spam input').val();
				formData.noAjax = $('#commentform input[name=noAjax]').val();
				
				$('#commentform div.ajaxindicator').show();
				$(this).hide();
				$.ajax({
					type: $('#commentform form').attr("method"),
					url: $('#commentform form').attr("action"),
					data: formData,
					success: function (html) {
						if($('ul.commentslist').length == 0)
						{
							$('#comments').prepend('<h3>Kommentare</h3><ul class="commentslist"></ul>');
						}

						$('ul.commentslist').append(html);
						$('ul.commentslist li:last').hide();
						$('ul.commentslist li:last').slideDown();
						
						form = $('#commentform form').get(0)
						form.reset();

						$('#commentform div.ajaxindicator').hide();
						$('#commentform button.submitbutton').show();
					},
					error : function (XMLHttpRequest, textStatus, errorThrown) {
						alert("Fehler beim Speichern des Kommentars. Sorry! " + textStatus);

						$('#commentform div.ajaxindicator').hide();
						$('#commentform button.submitbutton').show();
					}
				});
			}
			return false;
		});
	}
}
$(document).ready(function(){
	initCommentForm()
});

