/*
 * Freelove Framework
 *
 * FF_Comments JS part v. 2.3
 *
 */

$(function () {
	var c = $('#FF_Comments');
	if(c.length > 0) Comments = new FF_Comments(c[0]);
})


function FF_Comments (holder) {
	this.holder = holder
	this.form = $('#reply')[0]
	var comments = this

	comments.rm = function (t) {
		if(!confirm("Удалить этот комментарий?")) return false;

		var comment = comments.getComment(t);
		$(comment).addClass('deleting');
		$('#'+comment.id+' .content').after('<div class="deleting">Комментарий удаляется...</div>');
		$.postJSON(
			location.href, {
				ajax: 1,
				act: 'FF_Comments_rm',
				id: comment.id.replace('cmt_', '')
			}, function (response) {
				if (response.error) return !!alert(response.error);
				$('#cmt_'+response.id).removeClass('deleting').addClass('deleted');
				$('#cmt_'+response.id+' .content')[0].firstChild.nodeValue = 'Комментарий удален';
				$('#cmt_'+response.id+' .meta').add('#cmt_'+response.id+' .deleting').remove();
			}
		)
	}

	comments.re = function (t) {
		$("#cmt_0").appendTo('#'+comments.getComment(t).id);
		$("#FF_Comments form.reply input[name='pid']").val(comments.getComment(t).id.replace('cmt_', ''));
		$("#FF_Comments form.reply textarea[name='body']").focus();
	}

	comments.hl = function (t) {
		$("." + t.getAttribute('rev')).toggleClass("highlighted");
	}

	comments.wrap = function(t) {
		var t1 = "<" + t.getAttribute("rev") + ">", t2 = "</" + t.getAttribute("rev") + ">";
		TA_wrap($("#FF_Comments form.reply [name=body]")[0], t1, t2);
		return false;
	}

	comments.youtube = function() {
		var url;

		url = prompt("Скопируйте сюда адрес страницы на www.youtube.com с роликом, который вы хотите тут разместить", "");
		if(!url) return false;

		var re = new RegExp("youtube.com/watch.*[\\?&]v=([a-zA-Z0-9-]+)");
		var res;
		res = re.exec(url);
		if(!res) return !!alert("Не получается распознать введённый вами адрес");

		TA_insert($("#FF_Comments form.reply [name=body]")[0], "[[youtube " + res[1] + "]]\n");

		return false;
	}

	comments.smiley = function() {
		SmileyBox.show("#FF_Comments form.reply [name=body]");
		return false;
	}

	holder.onclick = function (e) {
		var e = e || event;
		var t = e.target || e.srcElement; // get caller
		if( t.getAttribute( 'rel' ) && t.tagName == 'A' && /\brm|re|hl|wrap|youtube|smiley\b/.test( t.getAttribute( 'rel' ) ) ) {
			return !! comments[ t.getAttribute( 'rel' ) ]( t ); // call action
		} else {
			return true; // do default action
		}
	}

	var tt = $('div.FF_post div.bottom' );
	if(tt.length > 0) tt[0].onclick = holder.onclick; // set onclick for dot. P. S. Глазырин, ты - идиот.

	comments.getComment = function (caller) {
		while (!/\bcomment\b/.test(caller.className)) caller = caller.parentNode;
		return caller;
	}

	$('#FF_Comments .cancel').click(function () {
		$("#FF_Comments input[name='pid']").val(0);
		$("#cmt_0").appendTo(comments.holder);
	});

	$("#reply").submit(function () {
		$("#FF_Comments form#reply").ajaxSubmit({
			dataType: 'json',
			success: comments.callback,
			url: location.protocol + "//" + location.host + location.pathname
		});

		return false;
	});

	comments.callback = function(response) {
		var new_parent;
		if(response.error) return !!alert(response.error);

		new_parent = response.pid == 0 ? $(comments.holder) : $("#cmt_" + response.pid).parent(".thread");
		new_parent.append(response.html);

		$('#FF_Comments .cancel').trigger("click");
		$("#FF_Comments  form.reply [name='body']").val('');
		$("#FF_Comments  form.reply [name='captcha']").val('');
//		$.scrollTo("#cmt_" + response.id, {duration: 500});

		// Здесь - перезагрузить капчу
		var captcha_img = $("#FF_Comments form.reply .captcha img");
		var cu = captcha_img.attr("src");
		var re = /&rnd=(\d+)/;
		if(re.test(cu)) {
			cu = cu.replace(re, "&rnd=" + Math.floor(Math.random() * 10000));
		} else {
			cu += "&rnd=" + Math.floor(Math.random() * 10000);
		}
		captcha_img.attr("src", cu);
	}

}
