/************************************************************************************************************
(C) www.dhtmlgoodies.com, March 2006

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/

var serverSideFile = '/poll/cast-vote.php';
var voteLeftImage = 'https://secure.jobdig.com/images/poll_images/graph_left_1.gif';
var voteRightImage = 'https://secure.jobdig.com/images/poll_images/graph_right_1.gif';
var voteCenterImage = 'https://secure.jobdig.com/images/poll_images/graph_middle_1.gif';

var graphMaxWidth = 130;
var graphMinWidth = 15;
var pollScrollSpeed = 5;
var txt_totalVotes = 'Total number of votes: ';

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('pollShowResults').style.display = 'none';
	document.getElementById('pollShowResults').style.visibility = 'hidden';
	
	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('DIV');
					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';
					pOption.appendChild(voteDiv);

					var numberDiv = document.createElement('DIV');
					numberDiv.style.backgroundImage = 'url(\'' + voteCenterImage + '\')';
					numberDiv.style.backgroundPosition = "center right";
					numberDiv.id = 'result_voteImg' + currentOptionId;
					voteDiv.appendChild(numberDiv);							

					var leftImage = document.createElement('IMG');
					leftImage.src = voteLeftImage;
					numberDiv.appendChild(leftImage);				
										
					var numberDiv2 = document.createElement('SPAN');
					numberDiv2.innerHTML = '0%';
					numberDiv2.style.color = 'black';
					numberDiv2.style.background = 'transparent';
					numberDiv2.id = 'result_voteTxt' + currentOptionId;
					voteDiv.appendChild(numberDiv2);	

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

				}
			}
		}
	}
	
	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){
			obj2 = document.getElementById('result_voteImg' + prop);
			obj2.style.width = Math.max(graphMinWidth,Math.round(currentPercent/100*graphMaxWidth)) + 'px';
			obj = document.getElementById('result_voteTxt' + prop);
			obj.innerHTML = currentPercent + '%';
		}			
	}	

	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,formObj)
{
	var elements = formObj.elements['vote[' + pollId + ']'];
	var optionId = false;
	for(var no=0;no<elements.length;no++){
		if(elements[no].checked)optionId = elements[no].value;
	}
	if(optionId){
		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;
	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
}
