var voteLeftImage = sPageAddr + 'img/' + opinionImageLeft;
var voteRightImage = sPageAddr + 'img/' + opinionImageRight;
var voteCenterImage = sPageAddr + 'img/' + opinionImageMiddle;

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
*/	
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(originalRequest)
{
	var resultDiv = $('idOpinionResult');
	resultDiv.innerHTML = '';
	
	try {
        //var xmlResponse = originalRequest.responseXML;
        var xmlResponse = this.response.xml;
    
        // przechwycenie potencjalnych bledow przez IE i Operę
        if (!xmlResponse || !xmlResponse.documentElement)
            throw("Invalid XML structure:\n" + this.response.text);
         
        // przechwycenie potencjalnych bledow przez Firefox
        var rootNodeName = xmlResponse.documentElement.nodeName;
        if (rootNodeName == "parsererror") 
            throw("Niepoprawna struktura XML:\n" + this.response.text);
        // pobiera element nadrzedny (element document)
        xmlRoot = xmlResponse.documentElement;
        // sprawdzanie, czy otrzymalismy taki dokument XML, jakiego sie spodziewalismy
        if (rootNodeName != "response" || !xmlRoot.firstChild)
            throw("Niepoprawna struktura XML:\n" + this.response.text);

    	pollVotes = new Array();
    	totalVotes = 0;
    
    	for(i=0; i<xmlRoot.childNodes.length; i++) {
    	    var currentOptionId = false;
    	    xmlRootChild = xmlRoot.childNodes.item(i);
            if(xmlRootChild.nodeName == 'option') { //  <option>
                for(j=0; j<xmlRootChild.childNodes.length; j++) {
                    xmlOptionChild = xmlRootChild.childNodes.item(j);
                    if(xmlOptionChild.nodeName == 'optionText') { // <optionText>
                        var pOption = document.createElement('p');
                        pOption.className = 'result-opinion';
                        pOption.innerHTML = xmlOptionChild.firstChild.data;
                        resultDiv.appendChild(pOption);
                    }
                    if(xmlOptionChild.nodeName == 'optionId') { // <optionId>
                        currentOptionId = Number(xmlOptionChild.firstChild.data);
                    }
                    if(xmlOptionChild.nodeName == 'votes') { // <votes>
    					var voteDiv = document.createElement('div');
    					voteDiv.className = 'result-graph';
    					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 = 'idOpinionResultOption' + currentOptionId;
    					voteDiv.appendChild(numberDiv);	
    					
    					var rightImage = document.createElement('img');
    					rightImage.src = voteRightImage;
    					voteDiv.appendChild(rightImage);
    					pollVotes[currentOptionId] = Number(xmlOptionChild.firstChild.data);
    					//alert(currentOptionId + ': ' + pollVotes[currentOptionId]);
    					totalVotes = Number(totalVotes) + pollVotes[currentOptionId];
                    }
                }
        	}
    	}
    	
    	var totalVoteP = document.createElement('p');
    	totalVoteP.className = 'result-sum-message';
    	totalVoteP.innerHTML = txt_totalVotes + ': ' + totalVotes;
    	resultDiv.appendChild(totalVoteP);
    	
    	setPercentageVotes();
    	slideVotes(0);
	
    }
    catch(e) {
        //alert(e.toString());
        resultDiv.className = 'error';
        resultDiv.innerHTML = opinion_error_ajax;
    }
}

function setPercentageVotes()
{
    var currentSum = 0;
	for(var prop in pollVotes){
		pollVotes[prop] = Math.round((pollVotes[prop] / totalVotes) * 100);
		if(!isNaN(pollVotes[prop])) {
            currentSum = currentSum + pollVotes[prop];
        }
	}	
	pollVotes[prop] = pollVotes[prop] + (100 - currentSum);
}

function slideVotes(currentPercent)
{
	currentPercent = Number(currentPercent) + 1;
	
	for(var prop in pollVotes) {
		if(pollVotes[prop] >= currentPercent) {
			var obj = $('idOpinionResultOption' + prop);
			obj.innerHTML = currentPercent + '%';
			obj.style.width = Math.max(graphMinWidth, Math.round(currentPercent/100*graphMaxWidth)) + 'px';
		}			
	}
	
	if(currentPercent < 100)
        setTimeout('slideVotes("' + currentPercent + '")', pollScrollSpeed);
}


function opinionLoader(originalRequest)
{
	$('idOpinionResult').style.display = 'block';
	$('idOpinionAnswers').style.display = 'none';
}

function opinionResponseError(originalRequest)
{
    $('idOpinionResult').className = 'error';
    $('idOpinionResult').innerHTML = opinion_error_ajax;
}

function opinionProcess(pollId)
{	
	var elements = document.getElementsByName('vote');
	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 url = sPageAddr + sLang + '/Opinions/' + rand(0,1000) + '/response.xml';
        var pars = 'optionId=' + optionId;
      //var pollerAjax = new Ajax.Request(url, {method:'get', parameters:pars, onCreate:opinionLoader, onComplete:showVoteResults});
        var pollerAjax = new XHR({method:'get', onRequest:opinionLoader, onSuccess:showVoteResults, onFailure:opinionResponseError}).send(url, pars);
	}
	else {
        displayResultsWithoutVoting(pollId);
    }
}	

function displayResultsWithoutVoting(pollId)
{
    var url = sPageAddr + sLang + '/Opinions/' + rand(0,1000) + '/response.xml';
    var pars = 'void';
  //var pollerAjax = new Ajax.Request(url, {method:'get', parameters:pars, onCreate:opinionLoader, onComplete:showVoteResults});
    var pollerAjax = new XHR({onRequest:opinionLoader, onSuccess:showVoteResults, onFailure:opinionResponseError}).send(url);
}

