
/************************************************************************************************************
(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 host='server';		//uncomment this if the file is running on the greatdad server
//var host='local';		//uncomment this if the file is running on the local
var host = 'server';
var where_is_mytool= self.location.href;
//alert(where_is_mytool);

var mytool_array=where_is_mytool.split("poll_all");
//alert(mytool_array.length);
/*if(mytool_array.length<=2)
	 pollpath='';	
else
{
		pollpath='../../../polls/'; 
}
alert(pollpath);*/
pollpath="/polls/";
var serverSideFile = pollpath +'ajax-poller-cast-vote-php.php';
var voteLeftImage =  pollpath +'images/graph_left_darkgreen.gif';
var voteRightImage = pollpath +'images/graph_right_darkgreen.gif';
var voteCenterImage = pollpath +'images/graph_middle_darkgreen.gif';
//red
var voteLeftImage1 = pollpath +'images/graph_left_red.gif';
var voteRightImage1 = pollpath + 'images/graph_right_red.gif';
var voteCenterImage1 = pollpath + 'images/graph_middle_red.gif';
//yellow
var voteLeftImage2 = pollpath + 'images/graph_left_yellow.gif';
var voteRightImage2 = pollpath + 'images/graph_right_yellow.gif';
var voteCenterImage2 = pollpath + 'images/graph_middle_yellow.gif';
//purple
var voteLeftImage3 = pollpath + 'images/graph_left_purple.gif';
var voteRightImage3 = pollpath + 'images/graph_right_purple.gif';
var voteCenterImage3 = pollpath + 'images/graph_middle_purple.gif';
//light green
var voteLeftImage4 = pollpath + 'images/graph_left_green.gif';
var voteRightImage4 = pollpath + 'images/graph_right_green.gif';
var voteCenterImage4 = pollpath + 'images/graph_middle_green.gif';
//blue
var voteLeftImage5 = pollpath + 'images/graph_left_blue.gif';
var voteRightImage5 = pollpath + 'images/graph_right_blue.gif';
var voteCenterImage5 = pollpath + 'images/graph_middle_blue.gif';

/*
var graphMaxWidth = 200;	// It will actually be a little wider than this because of the rounded image at the left and right
var graphMinWidth = 75;	// Minimum size of graph
var pollScrollSpeed = 3;	// Lower = faster
*/

var graphMaxWidth = 100;	// It will actually be a little wider than this because of the rounded image at the left and right
var graphMinWidth = 10;	// Minimum size of graph
var pollScrollSpeed = 0;	// Lower = faster

var useCookiesToRememberCastedVotes = false;	// Use cookie to remember casted votes
var txt_totalVotes = 'Total number of votes: ';

var ajaxObjects = new Array();
var pollVotes = new Array();
var pollVoteCounted = new Array();
var totalVotes = new Array();

var totalVotes1 = new Array();
var pollVotes1= 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;

//red
preloadedImages[3] = new Image();
preloadedImages[3].src = voteLeftImage1;
preloadedImages[4] = new Image();
preloadedImages[4].src = voteRightImage1;
preloadedImages[5] = new Image();
preloadedImages[5].src = voteCenterImage1;

//yellow
preloadedImages[6] = new Image();
preloadedImages[6].src = voteLeftImage2;
preloadedImages[7] = new Image();
preloadedImages[7].src = voteRightImage2;
preloadedImages[8] = new Image();
preloadedImages[8].src = voteCenterImage2;

//purple
preloadedImages[9] = new Image();
preloadedImages[9].src = voteLeftImage3;
preloadedImages[10] = new Image();
preloadedImages[10].src = voteRightImage3;
preloadedImages[11] = new Image();
preloadedImages[11].src = voteCenterImage3;

//light green
preloadedImages[12] = new Image();
preloadedImages[12].src = voteLeftImage4;
preloadedImages[13] = new Image();
preloadedImages[13].src = voteRightImage4;
preloadedImages[14] = new Image();
preloadedImages[14].src = voteCenterImage4;
//blue
preloadedImages[15] = new Image();
preloadedImages[15].src = voteLeftImage5;
preloadedImages[16] = new Image();
preloadedImages[16].src = voteRightImage5;
preloadedImages[17] = new Image();
preloadedImages[17].src = voteCenterImage5;

/*
These cookie functions are downloaded from 
http://www.mach5.com/support/analyzer/manual/html/General/CookiesJavaScript.htm
*/	
function Poller_Get_Cookie(name) { 
   var start = document.cookie.indexOf(name+"="); 
   var len = start+name.length+1; 
   if ((!start) && (name != document.cookie.substring(0,name.length))) return null; 
   if (start == -1) return null; 
   var end = document.cookie.indexOf(";",len); 
   if (end == -1) end = document.cookie.length; 
   return unescape(document.cookie.substring(len,end)); 
}

// This function has been slightly modified
function Poller_Set_Cookie(name,value,expires,path,domain,secure) { 
	expires = expires * 60*60*24*1000;
	var today = new Date();
	var expires_date = new Date( today.getTime() + (expires) );
    var cookieString = name + "=" +escape(value) + 
       ( (expires) ? ";expires=" + expires_date.toGMTString() : "") + 
       ( (path) ? ";path=" + path : "") + 
       ( (domain) ? ";domain=" + domain : "") + 
       ( (secure) ? ";secure" : ""); 
    document.cookie = cookieString; 
}

	
function showVoteResults(pollId,ajaxIndex,polltype)
{
	document.getElementById('poller_waitMessage' + pollId).style.display='none';
	document.getElementById('res').style.display='block';
	
	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();
	pollVotes1[pollId] = new Array();
	
	totalVotes[pollId] = 0;
	totalVotes1[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=="color"){
					var leftimage='graph_left_'+value+'.gif';
					var rightimage='graph_right_'+value+'.gif';
					var middleimage='graph_middle_'+value+'.gif';
					voteLeftImage = pollpath+'images/'+leftimage;
					voteRightImage = pollpath+'images/'+rightimage;
					voteCenterImage = pollpath+'images/'+middleimage;
				}
				
				if(key.indexOf('optionText')>=0){
					var key1 = elements[5].replace(/^(.*?)>.*$/gi,'$1');
					var value1 = elements[5].replace(/^.*?>(.*)$/gi,'$1');
					var key2 = elements[7].replace(/^(.*?)>.*$/gi,'$1');
					var value2 = elements[7].replace(/^.*?>(.*)$/gi,'$1');
					
					var pOption = document.createElement('P');
					pOption.className='result_pollerOption';
					//var poll_vote_img='<br>'+value+'<br>';
					//alert(value1);
					if(value2=="") value2="#";
					if(value1=='defaultimage.jpg'){
						var poll_vote_img='<br>'+value+'<br>';
					}else{
						var poll_vote_img='<br>'+value+'<br><a href=\''+value2+'\' target=\'_blank\'><img src=polloptionimg/'+escape(value1)+' border=0></a><br><br>';
					}
					//alert(poll_vote_img);
					pOption.innerHTML = poll_vote_img;
					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 + '\')';
					if(polltype=='percentage'){
						numberDiv.innerHTML = '0%';
					}else{
						numberDiv.innerHTML = '0';
					}
					numberDiv.id = 'result_voteTxt' + currentOptionId;
					voteDiv.appendChild(numberDiv);	
					
					var rightImage = document.createElement('IMG');
					rightImage.src = voteRightImage;
					voteDiv.appendChild(rightImage);						
					
					pollVotes[pollId][currentOptionId] = value;
					pollVotes1[pollId][currentOptionId] = value;
					totalVotes[pollId] = totalVotes[pollId]/1 + value/1;
					totalVotes1[pollId] = value;
					
				}
			}
		}
	}
	
	var totalVoteP = document.createElement('P');
	totalVoteP.className = 'result_totalVotes';
	totalVoteP.innerHTML = txt_totalVotes + totalVotes[pollId];
	voteDiv.appendChild(totalVoteP);	
	
	setPercentageVotes(pollId);
	
	if(polltype=='percentage'){
		slideVotes(pollId,0);
	}
	if(polltype=='number')
	{
		slideVotes_number(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 slideVotes_number(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 = pollVotes1[pollId][prop] +'&nbsp;vote(s)';*/
		obj.innerHTML = pollVotes1[pollId][prop];
	obj.style.width = Math.max(graphMinWidth,Math.round(currentPercent/100*graphMaxWidth)) + 'px';
			}			
			}
	if(currentPercent<100)setTimeout('slideVotes_number("' + 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,polltypeflag)
{	
	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;
	}
	Poller_Set_Cookie('dhtmlgoodies_poller_' + pollId,'1',6000000);
	if(optionId){
		var ajaxIndex = ajaxObjects.length;
		ajaxObjects[ajaxIndex] = new sack();
		ajaxObjects[ajaxIndex].requestFile = serverSideFile + '?pollId=' + pollId + '&optionId=' + optionId;
		prepareForPollResults(pollId);
		//alert(pollId+'=' +ajaxIndex+'=' +polltypeflag);
		ajaxObjects[ajaxIndex].onCompletion = function(){showVoteResults(pollId,ajaxIndex,polltypeflag); };	// Specify function that will be executed after file has been found
		ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function	

	}	
}	

function displayResultsWithoutVoting(pollId,polltypeflag)
{
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = serverSideFile + '?pollId=' + pollId;
	prepareForPollResults(pollId);
	ajaxObjects[ajaxIndex].onCompletion = function(){ showVoteResults(pollId,ajaxIndex,polltypeflag); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}

function displayResultsWithoutVoting1(pollId,polltypeflag)
{
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = serverSideFile + '?pollId=' + pollId;
	//prepareForPollResults(pollId);
	ajaxObjects[ajaxIndex].onCompletion = function(){ showVoteResults(pollId,ajaxIndex,polltypeflag); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}