jQuery.fn.sanitizedValue = function() {
	var html = this.val();
	
	html = jQuery.trim(html);
	html = html.replace(/[\r\n]{2,}/g, "\n\n");
	
	html = html.replace(/</g, "&lt;").replace(/>/g, "&gt;");
	
	html = html.replace(/&lt;(b|strong)&gt;(.*)&lt;\/\1&gt;/gim, "<strong>$2</strong>");
	html = html.replace(/&lt;(i|em)&gt;(.*)&lt;\/\1&gt;/gim, "<em>$2</em>");
	
	html = html.replace(/((\bhttps?:\/\/|\bwww\.)\S+)/g, "<a href=\"$1\">$1<\/a>");
	html = html.replace(/<a href="(?!https?:\/\/)/g, "<a href=\"http://");
	var targetDomains = html.match(/<a href=.*?<\/a>/g), domain, newLink;
	if (targetDomains) {
		for (var i in targetDomains) {
			if (!targetDomains[i]) {
				continue;
			}
			domain = String(targetDomains[i]).match(/<a href="http:\/\/([^\/"]+)/);
			if (!domain) {
				continue;
			}
			newLink = targetDomains[i].replace(/>.+?<\/a>/m, ">[" + domain[1] + "]<\/a>");
			html = html.replace(targetDomains[i], newLink)
		}
	}
	
	html = html.replace(/<a /g, '<a rel="nofollow" ');
	
	//html = html.replace(/<a.+?youtube\.com\/watch.+?<\/a>/g, "<div class=\"flash-placeholder\"><\/div>");
	
	html = html.replace(/&gt;\s*&gt;/g, "&gt;", html);
	html = html.replace(/(?:^|\n)\s*&gt;(?:\s*&gt;)*(.*)\n?/gm, '<blockquote><div>$1<\/div></blockquote>', html);
	html = html.replace(/<\/blockquote>[\n\s]*<blockquote>/g, '', html);
	html = html.replace(/(^|blockquote>)\s*@(\S.+?)\s*#(\d+)\D*<blockquote[^>]*>/mg
		, "$1<blockquote cite=\"" + location.pathname + "#komment-$3\" title=\"$2 írta:\">"
		, html);
	html = html.replace(/(<blockquote cite="([^"]+)" title="([^"]+)">)/g, "$1<div class=\"quote-origin\"><a href=\"$2\">$3</a><\/div>", html);
	
	html = html.replace(/\n/g, "<br />");
	return html;
};
jQuery.fn.addPreviewController = function () {
	this.before("<div class=\"preview-controller\" title=\"Bejelölve írás közben is látszik, ahogy kinéz majd az elfogadott szöveg.\"><label for=\"preview-checkbox\">Előnézet<input type=\"checkbox\" class=\"checkbox\" checked=\"checked\" /><\/label><\/div>");
	var checkbox = this.siblings("div.preview-controller").find("input[type=checkbox]");
	checkbox.attr("id", "preview-checkbox");
	checkbox.data("textarea", this);
	checkbox.click(function(){
		var textarea = jQuery(this).data("textarea");
		textarea.data("disable-preview", !this.checked);
		if (this.checked) {
			textarea.trigger("focus");
		}
	});
	return this;
};
jQuery.fn.addCharacterCounter = function () {
	if (!this.length) {
		return;
	}
	var maxLength = ValidatorData[this[0].id].maxLength[0];
	var textarea = this;
	function updateCounter(evt) {
		var span = textarea.data("counter");
		if (!span) {
			textarea.after("<div class=\"character-counter\"><span><\/span><\/div>");
			span = textarea.next("div.character-counter span");
			textarea.data("counter", span);
		}
		var val = textarea.val();
		if (val.length > maxLength) {
			val = val.substr(0, maxLength);
			textarea.val(val);
		}
		span.html("<span>" + (maxLength - val.length + " / " + maxLength) + "<\/span>");
	}
	this/*.keyup(updateCounter)*/
		.focus(updateCounter)
		.blur(function(){
			var $counter = jQuery(this).data("counter");
			if ($counter) {
				$counter.remove();
			}
			jQuery(this).removeData("counter");
		});
	return this;
}

function updatePreview(evt) {
	var o = $(evt.target);
	if (o.data("disable-preview")) {
		return;
	}
	_msieRepaintFix();
	var preview = o.nextAll("div.preview");
	if (!preview.length) {
		o.after("<div class=\"preview\"><div class=\"legend\">Előnézet<\/div><div class=\"content\"><\/div><\/div>");
		preview = o.nextAll("div.preview");
	}
	if (!preview.is(":visible")) {
		preview.slideDown("fast", _msieRepaintFix);
	}
	var html = o.sanitizedValue();
	o.parent().find("div.content").html(html);
}
function removePreview(evt) {
	var o = $(evt.target);
	o.nextAll("div.preview").slideUp(250, function(){
	_msieRepaintFix();
	});
}
function _msieRepaintFix() {
	if (!$.browser.msie || ($.browser.msie && $.browser.version > 7)) {
		return;
	}
	$("div.character-counter, div.preview-controller, div.row.for-submit")
		.css("position", "static")
		.css("position", "relative");
}

$(function(){
	$("textarea#info").focus(updatePreview).keyup(updatePreview).blur(removePreview).addPreviewController().addCharacterCounter();
	$("textarea#comment").focus(updatePreview).keyup(updatePreview).blur(removePreview).addPreviewController().addCharacterCounter();
	$("#submitinput").remove();
	$("form button[type=submit]").mousedown(function(){this.click()});// a preview eltűnés-animáció miatti probléma javítására
});
	$("input#cname").keyup(function(evt){
		if (evt.keyCode == 13) {
			evt.target.form.mehet.click();
		}
	});

