var serverSideFile = 'modules/mod_jLPoll/ajax-poller-cast-vote-php.php';
var voteLeftImage = 'modules/mod_jLPoll/images/graph_left_1.gif';
var voteRightImage = 'modules/mod_jLPoll/images/graph_right_1.gif';
var voteCenterImage = 'modules/mod_jLPoll/images/graph_middle_1.gif';

var graphMaxWidth = 140; // It will actually be a little wider than this
							// because of the rounded image at the left and
							// right
var graphMinWidth = 15; // Minimum size of graph
var pollScrollSpeed = 5; // Lower = faster
var useCookiesToRememberCastedVotes = false; // Joomla will take care
var txt_totalVotes = 'Antal stemmer: ';

var ajaxObjects = new Array();
var pollVotes = new Array();
var pollVoteCounted = new Array();
var totalVotes = new Array();

/* Preload images */

var preloadedImages = new Array();
preloadedImages[0] = new Image();
preloadedImages[0].src = voteLeftImage;
preloadedImages[1] = new Image();
preloadedImages[1].src = voteRightImage;
preloadedImages[2] = new Image();
preloadedImages[2].src = voteCenterImage;

function showVoteResults(pollId, ajaxIndex) {

	document.getElementById('poller_waitMessage' + pollId).style.display = 'none';

	var xml = ajaxObjects[ajaxIndex].response;
	xml = xml.replace(/\n/gi, '');

	var reg = new RegExp("^.*?<pollerTitle>(.*?)<.*$", "gi");
	var pollerTitle = xml.replace(reg, '$1');

	var resultDiv = document.getElementById('poller_results' + pollId);

	var titleP = document.createElement('P');
	titleP.className = 'result_pollerTitle';
	titleP.innerHTML = pollerTitle;
	resultDiv.appendChild(titleP);

	var options = xml.split(/<option>/gi);

	pollVotes[pollId] = new Array();
	totalVotes[pollId] = 0;
	for ( var no = 1; no < options.length; no++) {

		var elements = options[no].split(/</gi);
		var currentOptionId = false;
		for ( var no2 = 0; no2 < elements.length; no2++) {
			if (elements[no2].substring(0, 1) != '/') {
				var key = elements[no2].replace(/^(.*?)>.*$/gi, '$1');
				var value = elements[no2].replace(/^.*?>(.*)$/gi, '$1');

				if (key.indexOf('optionText') >= 0) {
					var pOption = document.createElement('P');
					pOption.className = 'result_pollerOption';
					pOption.innerHTML = value;
					resultDiv.appendChild(pOption);

				}

				if (key.indexOf('optionId') >= 0) {
					currentOptionId = value / 1;
				}

				if (key.indexOf('votes') >= 0) {
					var voteDiv = document.createElement('DIV');
					voteDiv.className = 'result_pollGraph';
					resultDiv.appendChild(voteDiv);

					/**
					 * var leftImage = document.createElement('IMG');
					 * leftImage.src = voteLeftImage;
					 * voteDiv.appendChild(leftImage);
					 * 
					 */

					var numberDiv = document.createElement('DIV');
					numberDiv.style.backgroundImage = 'url(\'' + voteCenterImage + '\')';
					numberDiv.innerHTML = '0%';
					numberDiv.id = 'result_voteTxt' + currentOptionId;
					numberDiv.style.width = '17px';
					//numberDiv.style.padding = '0px\; 5px\; 0px\; \5px';
					// numberDiv.style.float = 'center';

					voteDiv.appendChild(numberDiv);
					/**
					 * var rightImage = document.createElement('IMG');
					 * rightImage.src = voteRightImage; rightImage.style.float =
					 * 'left';
					 * 
					 * 
					 * voteDiv.appendChild(rightImage);
					 */

					resultDiv.appendChild(voteDiv);

					pollVotes[pollId][currentOptionId] = value;
					totalVotes[pollId] = totalVotes[pollId] / 1 + value / 1;
				}
			}
		}
	}

	var totalVoteP = document.createElement('P');
	totalVoteP.className = 'result_totalVotes';
	var str = txt_totalVotes + '' + totalVotes[pollId] +  '';
	totalVoteP.innerHTML = str;
	
	//totalVoteP.style.margin = '0px';
	voteDiv.appendChild(totalVoteP);

	setPercentageVotes(pollId);
	slideVotes(pollId, 0);
}

function setPercentageVotes(pollId) {
	for ( var prop in pollVotes[pollId]) {
		pollVotes[pollId][prop] = Math
				.round((pollVotes[pollId][prop] / totalVotes[pollId]) * 100);
	}

	var currentSum = 0;
	for ( var prop in pollVotes[pollId]) {
		currentSum = currentSum + pollVotes[pollId][prop] / 1;
	}
	pollVotes[pollId][prop] = pollVotes[pollId][prop] + (100 - currentSum);

}

function slideVotes(pollId, currentPercent) {
	currentPercent = currentPercent / 1 + 1;

	for ( var prop in pollVotes[pollId]) {
		if (pollVotes[pollId][prop] >= currentPercent) {
			var obj = document.getElementById('result_voteTxt' + prop);
			obj.innerHTML = currentPercent + '%';
			obj.style.width = Math.max(graphMinWidth, Math.round(currentPercent
					/ 100 * graphMaxWidth)) + 'px';
		}
	}

	if (currentPercent < 100)
		setTimeout('slideVotes("' + pollId + '","' + currentPercent + '")',
				pollScrollSpeed);
}

function prepareForPollResults(pollId) {
	document.getElementById('poller_waitMessage' + pollId).style.display = 'block';
	document.getElementById('poller_question' + pollId).style.display = 'none';
}

function castMyVote(pollId) {

	//alert(document.f_poll1.livesite.value);
	var elements = document.f_poll1.vote1; // radio button element name
	var optionId = false;

	for ( var no = 0; no < elements.length; no++) {
		if (elements[no].checked)
			optionId = elements[no].value; // Radio button selected value
	}

	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = serverSideFile + '?pollId=' + pollId
			+ '&optionId=' + optionId;
	prepareForPollResults(pollId);
	ajaxObjects[ajaxIndex].onCompletion = function() {
		showVoteResults(pollId, ajaxIndex);
	}; // Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function

}

function displayResultsWithoutVoting(pollId) {
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = serverSideFile + '?pollId=' + pollId
			+ '&wv=1';
	prepareForPollResults(pollId);
	ajaxObjects[ajaxIndex].onCompletion = function() {
		showVoteResults(pollId, ajaxIndex);
	}; // Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function

}
