/* This code will add a listener to the first poll form submit button (.jam-ajaxPoll) on the page.
 * The listener will update the poll with the correct results when the user votes.
 * This is to correct the problem that the jam-lite poll code does not include the user's vote in results.
 * Author: Peter Chamberlin
 */ 
Event.observe(window, 'load', function() {
	if($('q-vote') != null){
		$('q-vote').observe('click', function(){
			var updater = new PollResultsUpdater({containerClass: '.jam-ajaxPoll'});
		});
	}
});

PollResultsUpdater = Class.create({
	
	mainContainer:  null,  
	
	initialize: function(options){
	
		this.mainContainer = $($$(options.containerClass)[0]);
		
		var itemVotes = new Array();
		var totalVotes = 1;
		var i = 0;
		
		this.mainContainer.select('.poll-result li').each(function(item){
			
			itemVotes[i] = parseInt(item.down('span.poll-votes').innerHTML);
			totalVotes = totalVotes + itemVotes[i];
			i++;

		});

		var selectedRadioIndex = -1;
		
		for (i=0; i < document.pollAskForm.elements['answer[]'].length; i++){
			if (document.pollAskForm.elements['answer[]'][i].checked){
				selectedRadioIndex = i;
				itemVotes[i]++;
			}
		}

		var percentPerVote = 100 / totalVotes;
		i = 0;
		var s = '';
		var numVotes = 0;
		var percentVotes = 0;

		this.mainContainer.select('.poll-result li').each(function(item){

			numVotes = itemVotes[i];
			if(i == selectedRadioIndex){
				s = (numVotes == 1) ? '' : 's';
				item.down('span.poll-votes').update(numVotes.toString() + ' vote' + s);
				item.down('span.poll-votes').innerHTML;
				percentVotes = (numVotes * percentPerVote).toFixed(2);
				if(Math.ceil(percentVotes - 0.5) > percentVotes){
					percentVotes = Math.ceil(percentVotes);
				} else {
					percentVotes = Math.floor(percentVotes);
				}
				item.down('span.poll-percentage').update(percentVotes.toString());
				item.down('span.poll-percentage').innerHTML;
			}
			percentVotes = numVotes*percentPerVote;
			item.down('div.polls_resultbar').setStyle({width: percentVotes.toString() + '%'});
			i++;
		});
	}
});
