Vouting = function(ajaxPath, langId, alreadyVoteText, txtVotes)
{
	this.ajaxPath = ajaxPath;
	this.langId = langId;
	this.alreadyVoteText = alreadyVoteText;
	this.txtVotes = txtVotes;
	
	this.inputRadioName = 'variant';
	
	this.divVoutAllName = 'votes';
	this.divVoutName = 'vote_buttons';
	this.divError = 'vote_error';
	this.divResultName = 'results';
	this.divQuestionName = 'question';

	this.myAjax = new Ajax();
}

//#######################################
Vouting.prototype.doVouting = function()
{
	var variants = new Array();
	variants = document.getElementsByName(this.inputRadioName);

	var i = 0;
	while(i < variants.length)
	{
		if( variants[i].checked )
			{
				var checkedIdsString = variants[i].value;
				break;
			}
		i++;
	}

	if(checkedIdsString && checkedIdsString.length > 0)
	{
		var pointer = this;
		
		var onSuccessFunc = function (result) { pointer.getReaction(result) };
		var onErrorFunc = function (status) { /*alert("AJAX error: "+ status);*/ }; 
		
		var params = 'variant=' + checkedIdsString + '&lang=' + this.langId;
		
		this.myAjax.makeRequest( this.ajaxPath, params, 'POST', onSuccessFunc, onErrorFunc );
	}

}

//#######################################
Vouting.prototype.getReaction = function( result )
{
	var xml = result.responseXML;
	var result = xml.getElementsByTagName('result');
	if( result.length > 0 )
	{
		resultValue = result[0].firstChild.nodeValue;
	
		if( resultValue == 'false'){ this.setError(); }
		else{ this.setResult( result[0].childNodes ); }
	}
}

//######################################
Vouting.prototype.setError = function()
{
	var divError = document.getElementById(this.divError);
	divError.innerHTML = this.alreadyVoteText;
}

//####################################################
Vouting.prototype.setResult = function( resultValue )
{
	var divVote = document.getElementById(this.divVoutName);
	divVote.innerHTML = '';
//	divVote.style.display = 'none';
//	divVote.style.visibility = 'hidden';
	
	var voicesArray = new Array();
	
	var i = 0;
	var v = 0;
	while( i < resultValue.length )
	{
		if ( resultValue[i].firstChild != null )
		{
//			alert(resultValue[i].firstChild.nodeValue + ' : ' + resultValue[i].getAttribute("voices"));
//			this.createResults( resultValue[i].firstChild.nodeValue,  resultValue[i].getAttribute("voices"));
			
			voicesArray[v] = new Array(
									   	resultValue[i].firstChild.nodeValue, 
										resultValue[i].getAttribute("voices"), 
										resultValue[i].getAttribute("percent")
										);
			v++;
		}
		i++;
	}
	
	this.createResults( voicesArray );
}

//######################################################
Vouting.prototype.createResults = function( voicesArray )
{
	
	var divVoutAll = document.getElementById(this.divVoutAllName);
	
	var elementDivResult = document.createElement('div');
	elementDivResult.id = this.divResultName;
	divVoutAll.appendChild(elementDivResult);

	var elementDL = document.createElement('dl');
	elementDivResult.appendChild(elementDL);
	
	
	var i = 0;
	while ( i < voicesArray.length)
	{
		var elementDT = document.createElement('dt');
		elementDT.innerHTML = voicesArray[i][0] + ' <br /><span class="vote_var">('+voicesArray[i][2]+'% / '+voicesArray[i][1]+' '+ this.txtVotes+')</span>';
		elementDL.appendChild(elementDT);
		
		var elementDD = document.createElement('dd');
		//elementDD.innerHTML = voicesArray[i][2] + '% ' + voicesArray[i][1];
		elementDL.appendChild(elementDD);
		
		//<div style="height: 10px; width: 70%; background-color: red;"/>
		
		var elementDIV = document.createElement('div');
		elementDIV.style.width = voicesArray[i][2] + '%';
		elementDIV.style.backgroundColor = '#00' + this.d2h(Math.round((255/(voicesArray.length+1)) * (i+1))) + 'FF';
		elementDIV.style.height = '10px';
		elementDIV.style.fontSize = '5px';
		elementDD.appendChild(elementDIV);
		
		i++;
	}
	
	//var elementBR = document.createElement('br');
	//divVoutAll.appendChild(elementBR);
	//divVoutAll.appendChild(elementBR);
}

//#######################################
Vouting.prototype.d2h = function ( d )
{
	return d.toString(16);
}

//#######################################
Vouting.prototype.checkVote = function( voteId, langId )
{
	var pointer = this;
		
	var onSuccessFunc = function (result) { pointer.getReaction(result) };
	var onErrorFunc = function (status) { /*alert("AJAX error: "+ status);*/ }; 
	
	var params = 'voteId=' + voteId + '&lang=' + langId;
	
	this.myAjax.makeRequest( this.ajaxPath, params, 'POST', onSuccessFunc, onErrorFunc );
}
