if(window.jQuery){
	window.KarmaRank = function(url){
		var self= this;
		self.url = url;

		$(document).ready(function(){
			$('ul.karma').each(function(){
				self.init(this);
			});	
			$('div.vote').each(function(){
				self.init(this);
			});
		});
	};

	KarmaRank.prototype.init=function(ul){
		var self=this;
		$('a.positive',ul).click(function(){
			self.rank(ul,1);
			return false;
		});

		$('a.negative',ul).click(function(){
			self.rank(ul,-1);
			return false;
		});
	};

	KarmaRank.prototype.rank=function(ul,attitude){
		var self= this;
		var m	= $(ul).get_param('m');
		var oid	= $(ul).get_param('oid');

		$.ajax({
			url: self.url,
			data: {
				m: m,
				oid: oid,
				a: attitude
			},
			dataType: 'json',
			type: 'POST',
			success: function(data, textStatus){
				self.postRank(data);
			},
			error: function(request){
				alert(request.responseText);
			}
		});
	};

	KarmaRank.prototype.postRank=function(meta){
		var self = this;
		if(meta['oid']){
			var ul = $('#karma-'+meta['oid']);
			$('a.positive',ul).parent().remove();
			$('a.negative',ul).parent().remove();
			var li=$('.rank:first',ul)[0];
			var karma = parseInt(meta['karma']);
			if(karma > 0){
				$(li).removeClass('negative').addClass('positive').text(karma);
			}

			if(!karma){
				$(li).removeClass('negative').removeClass('positive').text(karma);
			}

			if(karma<0){
				$(li).addClass('negative').removeClass('positive').text(karma);
			}
		}	
	}	
}
