var AjaxVoter = new Class({
	
	link: false,
	currentScore: false,
	loading: false,
	
	initialize: function(element){
		this.link         = element.getElement('a');
		this.currentScore = element.getElement('.current');
		this.loading      = element.getElement('.loading div');
		this.fxSlide      = new Fx.Slide(this.loading);
		this.fxSlide.hide('vertical');
		this.start();
	},
	
	start: function()
	{
		if (this.link)
		{
			this.link.addEvent('click', function(evt){
				evt = new Event(evt);
				if (evt.target)
				{
					evt.stop();
					this.call(evt.target);
				}
			}.bind(this))
		}
	},
	
	call: function(targetEl)
	{
		target = targetEl.getAttribute('href');
		if (target)
		{
			new Json.Remote(target,{
				onRequest: function()
				{
					this.fxSlide.show('vertical');
				}.bind(this),
				onComplete: function(result)
				{
					if (result.error == true)
					{
						alert(result.message);
					}
					else
					{
						this.currentScore.setText(result.votes);
					}
					this.fxSlide.stop();
					this.fxSlide.slideOut('vertical');
				}.bind(this)
			}).send();
		}
	}
});

window.addEvent('domready', function(){
	var voters = $$('.voter');
	voters.each(function(voter){
		var voter = new AjaxVoter(voter);
	});
});