var serverSideFile = 'ajax/ajax-poller-cast-vote-php.php';
var voteLeftImage = 'images/graph_left_1.gif';
var voteRightImage = 'images/bg_grap.jpg';
var voteCenterImage = 'images/bg_grap.jpg';

var graphMaxWidth = 206;	// 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 = 10;	// Lower = faster
var useCookiesToRememberCastedVotes = false;	// Use cookie to remember casted votes
var txt_totalVotes = total_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;

/*
These cookie functions are downloaded from 
http://www.mach5.com/support/analyzer/manual/html/General/CookiesJavaScript.htm
*/	
if (typeof DOMParser == "undefined") {
   DOMParser = function () {}

   DOMParser.prototype.parseFromString = function (str, contentType) {
      if (typeof ActiveXObject != "undefined") {
         var d = new ActiveXObject("MSXML.DomDocument");
         d.loadXML(str);
         return d;
      } else if (typeof XMLHttpRequest != "undefined") {
         var req = new XMLHttpRequest;
         req.open("GET", "data:" + (contentType || "application/xml") +
                         ";charset=utf-8," + encodeURIComponent(str), false);
         if (req.overrideMimeType) {
            req.overrideMimeType(contentType);
         }
         req.send(null);
         return req.responseXML;
      }
   }
}

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){	
	
	document.getElementById('poller_waitMessage').style.display='none';	
	var xml = ajaxObjects[ajaxIndex].response;
//	xml = xml.replace(/\n/gi,'');
	
	var xmlobject = (new DOMParser()).parseFromString(xml, "text/xml");
	var root = xmlobject.getElementsByTagName('poller')[0];
		
	var resultDiv = document.getElementById('poller_results');
	
	var	pollTitle = root.getElementsByTagName('pollerTitle');
	
	for( i=0;i<pollTitle.length;i++ ) {
		var xmlPollID = pollTitle[i].getAttribute("id");
		
		pollVotes[xmlPollID] = new Array();
		totalVotes[xmlPollID] = 0;
		
		var titleP = document.createElement('DIV');
		titleP.className='result_pollerTitle';
		titleP.innerHTML = "+ "+pollTitle[i].getAttribute("name");
		resultDiv.appendChild(titleP);
		
		var listOption = pollTitle[i].getElementsByTagName("option");
		for ( k=0;k<listOption.length;k++ ) {
			var option = listOption[k];
			var optionText = option.getElementsByTagName("optionText")[0].firstChild.nodeValue;
			var optionID = option.getElementsByTagName("optionId")[0].firstChild.nodeValue;
			var optionVote = option.getElementsByTagName("votes")[0].firstChild.nodeValue;
			
			var pOption = document.createElement('DIV');
			pOption.className='result_pollerOption';
			pOption.innerHTML = optionText;
			resultDiv.appendChild(pOption);
			
			if( optionID>=0 ){
				currentOptionId = optionID/1;
			}
			
			if( optionVote>=0 ){
				var voteDiv = document.createElement('DIV');
				voteDiv.className='result_pollGraph';
				resultDiv.appendChild(voteDiv);
				
				var leftImage = document.createElement('IMG');
				leftImage.src = voteLeftImage;
				
				var numberDiv = document.createElement('P');
				numberDiv.style.backgroundImage = 'url(\'' + voteCenterImage + '\')';
				numberDiv.style.color = '#000000';
				numberDiv.style.padding = '0 5px;';
				numberDiv.innerHTML = '0%';
				numberDiv.id = 'result_voteTxt' + currentOptionId;
				voteDiv.appendChild(numberDiv);	
				
				var rightImage = document.createElement('IMG');
				rightImage.src = voteRightImage;
				
				pollVotes[xmlPollID][currentOptionId] = optionVote;					
				totalVotes[xmlPollID] = totalVotes[xmlPollID]/1 + optionVote/1;
			}
			
		}
		
		setPercentageVotes(xmlPollID);
		slideVotes(xmlPollID,0);
		
	}
}

function setPercentageVotes(pollId){	
	for(var prop in pollVotes[pollId]){
	//	alert('pollVotes = '+pollVotes[pollId][prop]);
		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').style.display='block';
	document.getElementById('poller_question').style.display='none';	
}

function castMyVote(pollId,formObj) {	
	arr_pollId = pollId.split(",");
	var optionId = "";
	for (i=0;i<arr_pollId.length;i++) {
		var elements = formObj.elements['vote[' + arr_pollId[i] + ']'];
		var lang = formObj.lang.value;		
		for(var no=0;no<elements.length;no++){
			if(elements[no].checked) {
				optionId += elements[no].value+',';
			}			
		}
	}	
	optionId = optionId.substring(0,optionId.length-1);
	
	if(optionId){	
		var ajaxIndex = ajaxObjects.length;
		ajaxObjects[ajaxIndex] = new sack();
		ajaxObjects[ajaxIndex].requestFile = serverSideFile + '?pollId=' + pollId + '&optionId=' + optionId + '&lang=' + lang;
		prepareForPollResults(pollId);
		ajaxObjects[ajaxIndex].onCompletion = function(){ showVoteResults(pollId,ajaxIndex); };	
		ajaxObjects[ajaxIndex].runAJAX();
	}		
}	

function displayResultsWithoutVoting(pollId,formObj){
//	alert ('pollId = '+pollId);
	var ajaxIndex = ajaxObjects.length;
	//var lang = formObj.lang.value;
	var lang = "vn";
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = serverSideFile + '?pollId=' + pollId + '&lang=' +lang;
	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		
	
	
}

