function ajaxVote(poolId) {
	var poolForm = $('pool-form-' + poolId);
	if (!poolForm) {
		alert($('vote-error-message').innerHTML);
		return false;
	}
	var variants = Form.getInputs(poolForm, 'radio', 'vote[' + poolId + ']');
	if (!variants.length) {
		alert(1);
		alert($('vote-error-message').innerHTML);
		return false;
	}
	var variantId;
	for (var i = 0; i < variants.length; i++) {
		if (variants[i].checked) {
			variantId = variants[i].value;
			break;
		}
	}
	if (!variantId) {
		alert($('vote-no-variant-message').innerHTML);
		return false;
	}
	poolForm.disable();
	var submit = getVoteSubmit(poolForm);
	submit.value = $('vote-loading-message').innerHTML;
	new Ajax.Request(
		'/ajax!/votes/vote/', 
		{
			parameters: {pool_id: poolId, variant_id: variantId},
			onComplete: function (response) {
				response_state = response.responseText;
				switch(response_state) {
					case 'done':
						var divHeight = $('pool-container-' + poolId).getHeight() + 'px';
						$('pool-container-' + poolId).innerHTML = $('vote-done-template').innerHTML;
						$('pool-container-' + poolId).setStyle({height: divHeight});
			    		break;
					case 'empty':
						poolForm.enable();
						submit.value = $('vote-submit-message').innerHTML;
						alert($('vote-error-message').innerHTML);
						return false;
				    	break;
					case 'not_authorized':
						poolForm.enable();
						submit.value = $('vote-submit-message').innerHTML;
						alert($('vote-not-authorized-message').innerHTML);	
						return false;						
				    	break;
					case 'denied':
						alert($('vote-denied-message').innerHTML);
						return false;
				    	break;		
					case 'double_vote':
						poolForm.enable();
						submit.value = $('vote-submit-message').innerHTML;
						alert($('vote-double-message').innerHTML);
						return false;
				    	break;		
			    	default:
						poolForm.enable();
			    		submit.value = $('vote-submit-message').innerHTML;
			     		alert($('vote-error-message').innerHTML);
						return false;
			    		break;
				}
			}
		}
	);
	return true;
}

function getVoteSubmit(poolForm) {
	var submits = Form.getInputs(poolForm, 'submit');
	if (!submits.length) {
		return null; 
	}	
	return submits[0];
}