function voteForTopic(topic_id, vote_factor) {
	if(!topic_id || !vote_factor) return false;

	var userActionPoints = $('userActionPoints').get('text').toInt();

	if(userActionPoints <= 1) return false;

	options = {
		url: '/forum/ajax/points.php?action=vote_topic',
		data: { 'topic':topic_id, 'factor':vote_factor },
		onRequest: function() {
			$('topic' + topic_id + 'down').destroy();
			$('topic' + topic_id + 'up').destroy();
		},
		onSuccess: function(result) {
			if(result['result']) {
				// кармпа
				$('topic' + topic_id + 'points').set('html', (result['points'] > 0) ? '<span style="color:#008000">' + result['points'] + '</span>' : (result['points'] < 0) ? '<span style="color:#800000">' + result['points'] + '</span>' : result['points']);

				// заряды
				$('userActionPoints').set('html', userActionPoints - 2);
			}
		},
		onFailure: function(xhr) {
			return false;
		}
	};
	new Request.JSON(options).send();
}

function voteForUser(user_id, vote_factor) {
	if(!user_id || !vote_factor) return false;

	var userActionPoints = $('userActionPoints').get('text').toInt();
	var userPower = $('user' + user_id + 'power').get('text').toFloat();

	if(userActionPoints <= 2) return false;

	options = {
		url: '/forum/ajax/points.php?action=vote_user',
		data: { 'user':user_id, 'factor':vote_factor },
		onRequest: function() {
			$('user' + user_id + 'down').destroy();
			$('user' + user_id + 'up').destroy();
		},
		onSuccess: function(result) {
			if(result['result']) {
				// карма
				$('user' + user_id + 'points').set('html', (result['points'] > 0) ? '<span style="color:#008000">' + result['points'] + '</span>' : (result['points'] < 0) ? '<span style="color:#800000">' + result['points'] + '</span>' : result['points']);

				// заряды
				$('userActionPoints').set('html', userActionPoints - 3);

				// сила
				userPower = (vote_factor == 'bad') ? userPower - 0.1 : userPower + 0.1;
				userPower = userPower.round(2);
				$('user' + user_id + 'power').set('html', (userPower > 0) ? '<span style="color:#008000">' + userPower + '</span>' : (userPower < 0) ? '<span style="color:#800000">' + userPower + '</span>' : userPower);
			}
		},
		onFailure: function(xhr) {
			return false;
		}
	};
	new Request.JSON(options).send();
}

function voteForUserInPost(user_id, post_id, vote_factor) {
	if(!user_id || !vote_factor || !post_id) return false;

	var userActionPoints = $('userActionPoints').get('text').toInt();

	if(userActionPoints <= 2) return false;

	options = {
		url: '/forum/ajax/points.php?action=vote_user',
		data: { 'user':user_id, 'factor':vote_factor },
		onRequest: function() {
			$('userInPost' + post_id + 'down').destroy();
			$('userInPost' + post_id + 'up').destroy();
		},
		onSuccess: function(result) {
			if(result['result']) {
				// карма
				$('userInPost' + post_id + 'points').set('html', (result['points'] > 0) ? '<span style="color:#008000">' + result['points'] + '</span>' : (result['points'] < 0) ? '<span style="color:#800000">' + result['points'] + '</span>' : result['points']);

				// карма других постов юзера
				$$('.carma' + user_id).each(function(el) {
					el.set('html', $('carma' + post_id).get('html'));
				});

				// заряды
				$('userActionPoints').set('html', userActionPoints - 3);
			}
		},
		onFailure: function(xhr) {
			return false;
		}
	};
	new Request.JSON(options).send();
}

function voteForPost(post_id, vote_factor) {
	if(!post_id || !vote_factor) return false;

	var userActionPoints = $('userActionPoints').get('text').toInt();

	if(userActionPoints <= 0) return false;

	options = {
		url: '/forum/ajax/points.php?action=vote_post',
		data: { 'post':post_id, 'factor':vote_factor },
		onRequest: function() {
			$('post' + post_id + 'down').destroy();
			$('post' + post_id + 'up').destroy();
		},
		onSuccess: function(result) {
			if(result['result']) {
				// кармпа
				$('post' + post_id + 'points').set('html', (result['points'] > 0) ? '<span style="color:#008000">' + result['points'] + '</span>' : (result['points'] < 0) ? '<span style="color:#800000">' + result['points'] + '</span>' : result['points']);

				// заряды
				$('userActionPoints').set('html', userActionPoints - 1);
			}
		},
		onFailure: function(xhr) {
			return false;
		}
	};
	new Request.JSON(options).send();
}

function flipVoteForUser(user_id) {
	if(!user_id) return false;

	var userActionPoints = $('userActionPoints').get('text').toInt();
	var userPower = $('user' + user_id + 'power').get('text').toFloat();

	if(userActionPoints <= 2) return false;

	options = {
		url: '/forum/ajax/points.php?action=flip_user',
		data: { 'user':user_id },
		onRequest: function() {
			$('flip' + user_id + 'points').destroy();
		},
		onSuccess: function(result) {
			if(result['result']) {
				// карма
				$('user' + user_id + 'points').set('html', (result['points'] > 0) ? '<span style="color:#008000">' + result['points'] + '</span>' : (result['points'] < 0) ? '<span style="color:#800000">' + result['points'] + '</span>' : result['points']);

				// заряды
				$('userActionPoints').set('html', userActionPoints - 3);

				// сила
				userPower = userPower + result['power_diff'];
				userPower = userPower.round(2);
				$('user' + user_id + 'power').set('html', (userPower > 0) ? '<span style="color:#008000">' + userPower + '</span>' : (userPower < 0) ? '<span style="color:#800000">' + userPower + '</span>' : userPower);
			}
		},
		onFailure: function(xhr) {
			return false;
		}
	};
	new Request.JSON(options).send();
}