(function($) {
	$(document).ready(function() {
		$('div.poll-block a.eview-link').livequery('click', function() {
			return $(this).pollLoad();
		});

		$('div.poll-block form.eview-form').livequery('submit', function() {
			return $(this).pollLoad();
		});

		$.fn.extend({
			'pollLoad': function(targetElement, loaderElement) {
				if (!($(this).is('a') || $(this).is('form'))) {
					return;
				}

				if (!targetElement) {
					targetElement = $(this).parents('div.eview-link-target').eq(0);
				}
				else if (typeof targetElement != 'object') {
					targetElement = $(targetElement);
				}

				if (!loaderElement) {
					loaderElement = targetElement.find('.eview-loader');
				}
				else if (typeof loaderElement != 'object') {
					loaderElement = $(loaderElement);
				}

				var xhr = {
					type: 'get',
					data: {}
				}

				if ($(this).is('form')) {
					xhr.type = $(this).attr('method');
					xhr.url = $(this).attr('action');
					xhr.data = $(this).serialize();
				}

				if ($(this).is('a')) {
					xhr.url = $(this).attr('href');
				}

				loaderElement.show();

				/*
				 * Check if a vote has been made
				 */
				var goAHead = false;

				$(this).find("input[type=radio]").each(function(i)
				{
					if(this.checked)
					{
						goAHead=true;
					}
				});

				if(!goAHead)
				{
					//display error message, no vote selected
					$(".poll-message").html("U heeft niet gestemd.").fadeIn("slow");

					//abort
					loaderElement.hide();
					return false;
				}

				//fade the block out
				$(".poll-fade").fadeOut("slow", function(){
					/**
					 * Do the AJAX request
					 */
					$.ajax({
						type: xhr.type,
						data: xhr.data,
						url: xhr.url,
						success: function(data) {
							//console.log(targetElement);
							loaderElement.hide();
							//targetElement.css("display", "none");
							targetElement.replaceWith(data);
							//targetElement.css("display", "none");
							//targetElement.html(data).fadeIn("slow");

							//display ok message
							$(".poll-message").text("U heeft gestemd.");
						}
					});
				});

				return false;
			}
		});
	})
})(jQuery);