jQuery(function($)
{
	$('form.comment textarea.editor').ckeditor(function() {}, {
		customConfig: '/js/ckconfig/ckconfig.js',
		toolbar: 'Comment'
	});
	
	$('form.entry textarea#description').ckeditor(function() {}, {
		customConfig: '/js/ckconfig/ckconfig.js',
		toolbar: 'Description',
		height: '12em'
	});
	
	$('form.entry textarea#content').ckeditor(function() {}, {
		customConfig: '/js/ckconfig/ckconfig.js',
		toolbar: 'Entry',
		height: '36em'
	});
	
	$('div.comments form.comment').submit(function(event)
	{
		event.preventDefault();
		var form = $(this);
		var data = form.serialize();
		data += '&format=html';
		
		// Change submit button's label
		var submitButton = form.find('button.submit');
		var prevSubmitLabel = submitButton.html();
		submitButton.html('<span>Submitting...</span>');
		submitButton.attr('disabled', 'disabled');
		
		// Remove existing errors
		form.find('dd[id$=element] ul.errors').remove();
		
		var onAjaxSuccess = function(html)
		{
			var comment = $(html);
			comment.hide(0);
			$('ul.comments').append(comment);
			comment.show(250);
			
			form.hide(0);
			var message = $('<p>Your comment has been submitted. </p>');
			var link = $('<a href="#">Post another comment.</a>');
			link.click(function(event)
			{
				event.preventDefault();
				message.remove();
				var editor = $('form.comment textarea.editor');
				editor.val('<p></p>');
				// Get new captcha
				if (typeof(Recaptcha) != 'undefined') {
					Recaptcha.reload();
				}
				form.show(0);
			});
			message.append(link);
			form.after(message);
		};
		
		var onAjaxError = function(response)
		{
			var newForm = $(response.responseText);
			newForm.find('ul.errors').each(function()
			{
				var errors = $(this);
				var dd = errors.closest('dd');
				form.find('dd[id=' + dd.attr('id') + ']').append(errors);
			});
		};
		
		var onAjaxComplete = function()
		{
			submitButton.html(prevSubmitLabel);
			submitButton.removeAttr('disabled');
		};
		
		$.ajax({
			url:			form.attr('action'),
			data:			data,
			type:			'post',
			success:		onAjaxSuccess,
			error:			onAjaxError,
			complete:		onAjaxComplete
		});
	});
});