function Vote(i)
{
	var id = i;
	var main = $("#" + id);
	var annotations;
	
	parseAnnotations();
	var minusHref = $("." + annotations.minusClass, main);
	var plusHref = $("." + annotations.plusClass, main);
	var content = $("." + annotations.contentClass, main);
	var voting = parseInt(annotations.voting);
	var vote = parseInt(annotations.vote);
	var voteKoef = parseInt(annotations.voteKoef);
	var loged = annotations.loged == "true";
	var admin = annotations.admin == "true";
	var raiting = annotations.raiting.replace("&nbsp;", "");
	raiting = parseInt(raiting);
	if(raiting == 0)
		content.html("" + raiting);
	else
		content.html(raiting); 
	var that = this;
	
	function cancelClick(){
		return false;
	}
	
	this.init = function(r, vg, v){
		vote = v;
		voting = vg;
		raiting = r;
		if(raiting == 0)
			content.html("" + raiting);
		else
			content.html(raiting);
		initButtons();
	}
	
	this.setRaiting = function(val){
		raiting = raiting + parseInt(val);
		content.html(raiting);
	} 
	
	initButtons();
	
	function initButtons(){
		if(!admin){
			if(vote == 0){
				showPlus();
				showMinus();
			}
			if(vote > 0){
				hidePlus();
				showMinus();
			}
			if(vote < 0){
				hideMinus();
				showPlus();
			}
		}else{
			showPlus();
			showMinus();
		}
	}
	
	function onMinusClick(event)
	{
		if(!loged){
			initAuthPanel();
			return false;
		}
		if(!admin)
		{
			hideMinus();
			showPlus();
		}
		sendData(-1 * voteKoef);
		return false;
	}
	
	function onPlusClick(event)
	{
		if(!loged){
			initAuthPanel();
			return false;
		}
		if(!admin)
		{
			hidePlus();
			showMinus();
		}
		sendData(voteKoef);
		return false;
	}
	
	function sendData(v){
		var data = {voting:voting, vote:v, type:annotations.type};
		$.get(annotations.url, data, onSendData);
	}
	
	function onSendData(data){
		var res = data.getElementsByTagName("voting");
		var r = parseFloat(res[0].getAttribute("raiting"));
		raiting = Math.round(r);
		if(raiting == 0)
			content.html("" + raiting);
		else
			content.html(raiting);
	}
	
	function hidePlus(){
		plusHref.unbind("click", onPlusClick);
		plusHref.bind("click", cancelClick);
		plusHref.attr("class", annotations.plusNAClass);
	}
	
	function hideMinus(){
		minusHref.unbind("click", onMinusClick);
		minusHref.bind("click", cancelClick);
		minusHref.attr("class", annotations.minusNAClass);
	}
	
	function showMinus(){
		minusHref.unbind("click", cancelClick);
		minusHref.bind("click", onMinusClick);
		minusHref.attr("class", annotations.minusClass);
	}
	
	function showPlus(){
		plusHref.unbind("click", cancelClick);
		plusHref.bind("click", onPlusClick);
		plusHref.attr("class", annotations.plusClass);
	}
	
	function parseAnnotations(){
		var arr = $(".annotations", main).html().split(",");
		annotations = {};
		for(var i = 0; i < arr.length; i++){
			var pare = arr[i].split("=");
			annotations[pare[0]] = pare[1];
		}
	}
}