(function($){
	var opts;

	$.selectionError = function(options){
		opts = $.extend({}, $.selectionError.defaults, options);
		
		$(opts.obj).keypress(function(e) {
			e = e || event || window.event;
			if ((e.keyCode == 13 || e.keyCode == 10)&& !!e.ctrlKey) {
				var text = $.selectionError.getSelectedText(opts.obj);
				if (text.length && text.length > 0 && text.length < opts.maxLength) {
					$.modalWindow({
						windowTitle	: 'Заметили ошибку на сайте?',
						content		: $('<div></div>')
									. append('<p class="quote f-green">«' + text.replace(/\n/gi, '<br />') + '»</p>'
									+ '<p>В этом тексте есть ошибка?</p>')
									. append($('<p class="g-mb0"></p>')
										.append($('<button><b>Да</b></button>')
											.click(function(){$.selectionError.send(text);})
										)
										.append($('<button class="g-mlh">Нет</button>')
											.click($.modalWindow.close)
										)
									  )
					});
				}
			}
		});
	};
	
	$.selectionError.send = function(text) {
		$.modalWindow.close();
		$.ajax({
			url		: opts.sendUrl,
			type	: 'POST',
			complete: $.selectionError.thanks,
			data	: {
				text: text,
				url	: location.href
			}
		});
	};
	
	$.selectionError.thanks = function() {
		$.modalWindow({
			windowTitle	: 'Заметили ошибку на&nbsp;сайте?',
			content		: $('<div></div>')
						. append('<p>Эта ошибка скоро будет исправлена!</p>'
						+ '<p>Спасибо за&nbsp;ваше&nbsp;внимание к&nbsp;нашему&nbsp;сайту!</p>')
						. append($('<p class="g-mb0"></p>')
							.append($('<button>Закрыть</button>')
								.click($.modalWindow.close)
							)
						  ),
			width		: 300
		});
	};
	
	$.selectionError.getSelectedText = function (obj) {
		var sSel = '';
		if (obj.selection) { //  Для MSIE
			sSel = obj.selection.createRange().text;
		} else if (obj.getSelection) {
			sSel = obj.getSelection();
		} else if (obj.selectionStart || obj.selectionStart == '0') { // Для нормальных браузеров
			var startPos= obj.selectionStart,
				endPos	= obj.selectionEnd;
			sSel = obj.value.substring(startPos, endPos - startPos);
		}
		return sSel;
	};
	
	$.selectionError.defaults = {
		obj		: document,
		sendUrl	: '/error-in-text',
		maxLength: 1500
	};
})(jQuery);

jQuery(function() {jQuery.selectionError();});