/*function karma(thumb,amount) {
	var req = initrequest();
	if (!req) {
		return;
	}
	var karma = thumb.parentNode.getAttribute('data-karma');
	var id = thumb.parentNode.getAttribute('data-elementid');
	var remove =
		amount > 0 && karma > 0
	||	amount < 0 && karma < 0;

	var poststr = 'ELEMENT='+encodeURIComponent(karma_element)+'&ID='+encodeURIComponent(id)+'&CRC='+karma_crc;
	if (amount < 0) {
		poststr += '&NEGATIVE=true';
	}
	if (remove) {
		poststr += '&REMOVE=true';
	}
	req.open('POST','/karma.act',true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.onreadystatechange = function() {
		if (req.readyState != 4) {
			return;
		}
		if (req.status == 200) {
			if (remove) {
				thumb.parentNode.setAttribute('karma',0);
				thumb.className += ' inactive';
				return;
			}
			thumb.parentNode.setAttribute('karma',amount);
			remclass(thumb,'inactive');
			if (amount > 0) {
				var otherKarmaTHMB = thumb.nextSibling;
			} else {
				var otherKarmaTHMB = thumb.previousSibling;
			}
			if (!otherKarmaTHMB.className.match(/inactive/)) {
				otherKarmaTHMB.className += ' inactive';
			}
		}
	};
	req.send(poststr);
}*/
function karma(thumb,amount) {
	if (thumb.busy) return;
	thumb.busy = true;
	var req = initrequest(true);
	if (!req) return;
	var karma = thumb.parentNode.getAttribute('data-karma');
	var id = thumb.parentNode.getAttribute('data-elementid');
	var remove =
		amount > 0 && karma > 0
	||	amount < 0 && karma < 0;

	var poststr = 'ELEMENT='+encodeURIComponent(karma_element)+'&ID='+encodeURIComponent(id)+'&CRC='+karma_crc;
	if (amount < 0) {
		poststr += '&NEGATIVE=true';
	}
	if (remove) {
		poststr += '&REMOVE=true';
	}
	req.open('POST','/karma.act',true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.onreadystatechange = function() {
		if (req.readyState != 4) {
			return;
		}
		if (req.status == 200) {
			if (remove) {
				thumb.parentNode.setAttribute('data-karma',0);
				thumb.className += ' inactive';
				if (!(thumb.previousSibling.innerHTML -= amount)) {
					thumb.previousSibling.innerHTML = '';
				}
				thumb.busy = false;
				return;
			}
			thumb.parentNode.setAttribute('data-karma',amount);
			remclass(thumb,'inactive');
			if (amount > 0) {
				var karmaCNT = thumb.previousSibling;
				var otherKarmaCNT = thumb.nextSibling;
				var otherKarmaTHMB = otherKarmaCNT.nextSibling;
			} else {
				var karmaCNT = thumb.previousSibling;
				var otherKarmaTHMB = karmaCNT.previousSibling;
				var otherKarmaCNT = otherKarmaTHMB.previousSibling;
			}
			if (!otherKarmaTHMB.className.match(/inactive/)) {
				otherKarmaTHMB.className += ' inactive';
				var val = parseInt(otherKarmaCNT.innerHTML);
				val += amount;
				otherKarmaCNT.innerHTML = val ? (val > 0 ? '+'+val : val) : '';
			}
			var val = parseInt(karmaCNT.innerHTML);
			karmaCNT.innerHTML = val ? ((val+=amount) > 0 ? '+'+val : val) : (amount > 0 ? '+1' : '-1');
		}
		thumb.busy = false;
	};
	req.send(poststr);
}
