var _vote_data = {
	interval_id : null,
	last_pct_good: 0,
	last_pct_bad: 0,
	last_num_good: 0,
	last_num_bad: 0,
	last_score: 0,
	final_pct_good: 0,
	final_pct_bad: 0,
	final_num_good: 0,
	final_num_bad: 0,
	final_score: 0,
	step: 0.15,
	interval: 50
};

function update_field(last, fin) {
	var v = last;
	if (Math.abs(last - fin) <= 2) v = fin;
	else {
		if (last > fin)
			v =  last + Math.min(-2, (fin - last) * _vote_data.step);
		else
			v =  last + Math.max(2, (fin - last) * _vote_data.step);
	}
	return v;
}

function _update_vote() {
	_vote_data.last_pct_good =update_field(_vote_data.last_pct_good, _vote_data.final_pct_good);
	_vote_data.last_pct_bad =update_field(_vote_data.last_pct_bad, _vote_data.final_pct_bad);
	_vote_data.last_num_good =update_field(_vote_data.last_num_good, _vote_data.final_num_good);
	_vote_data.last_num_bad =update_field(_vote_data.last_num_bad, _vote_data.final_num_bad);
	_vote_data.last_score =update_field(_vote_data.last_score, _vote_data.final_score);

	E("vote_pct_good").style.width = _vote_data.last_pct_good + "%";
	E("vote_pct_bad").style.width = _vote_data.last_pct_bad + "%";
	E("vote_cnt_good").innerHTML = _vote_data.last_num_good;
	E("vote_cnt_bad").innerHTML = _vote_data.last_num_bad;
	E("vote_big_star").style.width = _vote_data.last_score + "%";

	if (_vote_data.last_pct_good == _vote_data.final_pct_good &&
		_vote_data.last_pct_bad == _vote_data.final_pct_bad &&
		_vote_data.last_num_good == _vote_data.final_num_good &&
		_vote_data.last_num_bad == _vote_data.final_num_bad &&
		_vote_data.last_score == _vote_data.final_score ) {
		clearInterval(_vote_data.interval_id);
		_vote_data.interval_id = null;
	}
}

function setVote(data) {
	eval("var data = " + data);
	if (!E("vote_pct_good")) return;
	var total = data.up_times + data.down_times;
	if (total == 0) total = 1;

	_vote_data.final_pct_good = parseInt(data.up_times * 100 / total + 0.5);
	_vote_data.final_pct_bad =  parseInt(data.down_times * 100 / total + 0.5);
	_vote_data.final_num_good = data.up_times;
	_vote_data.final_num_bad = data.down_times;
	_vote_data.final_score = parseInt(data.up_times * 100 / total + 0.5);
	if (_vote_data.interval_id == null) {
		_vote_data.interval_id = setInterval("_update_vote()", _vote_data.interval);
	}
}

function vote(id, action) {
	var url = "/cb/note.php?id=" + id + "&action=" + action;
	var xmlrequest = createXMLHttpRequest();
	xmlrequest.onreadystatechange = function (){
		if ( xmlrequest.readyState == 4) {
			if (xmlrequest.responseText != "") {
				E("vote_title").innerHTML = "Do you like this game?&nbsp;&nbsp;&nbsp;&nbsp;<img src=/imgs/ok.png width=16 height=16>Thanks for your voting!</div>";
				setVote(xmlrequest.responseText);
			}
		}
	};
	E("vote_title").innerHTML = "Do you like this game?&nbsp;&nbsp;&nbsp;&nbsp;<img src=/imgs/loading.gif width=16 height=16>Submiting...";
	E("vote_op").innerHTML = "";
	xmlrequest.open("POST", url, true);
	xmlrequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
	xmlrequest.send("");
}

