if(window.jQuery){
	
	window.KarmaRank = function(url){
		var self= this;
		self.url = url;
		self.cookie_opts = {
			path: '/',
			expires: new Date(2020, 1, 1)
		}

		$(document).ready(function(){
			$('ul.karma').each(function(){
				self.init(this);
			});	
			$('div.voting').each(function(){
				self.init(this);
			});
			
			/* для бывшего анонимуса */
			
			var post = $.cookie('dolike');
			var parent = [];
			
			if (post)
				parent = $('#karma-p'+post);
			if (parent.length) {
				/* если блок есть, а ссылки нет, то чувак уже проголосовал */
				var link = $('div.like a', parent);
				if (link.length) {
					link.click();
				}
				var opts = self.cookie_opts;
				opts.expires = new Date();
				$.cookie('dolike', '', opts);
			}
		});
	};

	KarmaRank.prototype.init=function(ul){
		var self=this;
		$('a.positive',ul).click(function(){
			if ($(this).hasClass('login-link')) {
				/* ставим куку, чтоб при следующем логине автоматически сделать like */
				$.cookie('dolike', $(ul).get_param('oid'), self.cookie_opts);
			} else {
				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');
		
		var obj = $(ul).get_param('obj');
		var otype = $(ul).get_param('otype');
		
		var data = {
			m: m,
			oid: oid,
			a: attitude
		}
		
		if (obj && otype) {
			data.obj = obj;
			data.otype = otype;
		}
		
		$.ajax({
			url: self.url,
			data: data,
			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',ul);
			
			var karma = parseInt(meta['karma']);
			var is_post = (meta['oid'].substr(0,1) == 'p') ? true : false;
			var is_comment = (meta['oid'].substr(0,1) == 'c') ? true : false;
			
			if(karma > 0){
				var prefix = (is_post) ? '+ ' : '';
				$(li).removeClass('negative').addClass('positive').text(prefix + karma);
			}

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

			if(karma<0){
				var prefix = (is_post) ? '- ' : '';
				$(li).addClass('negative').removeClass('positive').text(prefix + karma);
			}
			
			$(li).removeClass('hidden');
			
			if (is_post) {
				/* если это пост, то добавляем голосовавшего в список */
				
				var voters = $('div.voters div:first', ul);
				var uname = $('#uname').text();
				var ulink = '<a href="/user/' + uname + '/profile/">' + uname + '</a>';
				
				if (voters.length) {
					voters.append(', ' + ulink);
				} else {
					ul.append('<div class="voters"><div>Нравится: ' + ulink + '</div></div>');
				}
			}
			
			if (is_comment) {
				if (meta['type'] == 'positive') {
					var el = $('#today-positive');
				}
				if (meta['type'] == 'negative') {
					var el = $('#today-negative');
				}
				if (typeof(el) != 'undefined' && el.length) {
					var value = el.text() * 1;
					if (value != NaN) {
						value -= 1;
						el.text(value);
					}
				}
			}
		}	
	}	
}

