function getSelectionContent(type)
{
	if(typeof window.getSelection!='undefined'){
		
		//Ветка для Gecko-браузеров
		var selection=window.getSelection();
		if(selection.rangeCount<1)return;
		var range=selection.getRangeAt(0);

		//Если выделение выходит за рамки поста - игнорируем
		var start=range.startContainer;
		var end=range.endContainer;
		if(start && start.parentNode && start.parentNode.className!='comment_text')return;
		if(end && end.parentNode && end.parentNode.className!='comment_text')return;

		return type?range.cloneContents():range.toString

	}
	else{

		//Ветка для IE
		var range=document.selection.createRange();

		//Если выделение выходит за рамки поста - игнорируем
		if(range.parentElement().className!='comment_text')return;
		//Помещаем все слова в выделение целиком
		range.expand('word');

		if(type){
			var fragment=document.createDocumentFragment();
				//Только из-за баги в IE по поводу вставки парного BR
				fragment.appendChild(document.createElement('<div>'));
				fragment.firstChild.outerHTML=range.htmlText.replace(/<br>/ig,' ');
			return fragment
		}else{
			return range.text
		}

	}
}

//Возвращает позицию каретки в поле ввода
function getSelectionStart(obj)
{
	obj.focus();

	if(typeof obj.selectionStart!='undefined'){
		//Gecko
		return obj.selectionStart
	}else if(document.selection){
		//IE
		var sel=document.selection.createRange();
		var clone=sel.duplicate();
		sel.collapse(true);
		clone.moveToElementText(obj);
		clone.setEndPoint('EndToEnd', sel);
		return clone.text.length;
	}
 
	return 0;
}

//Если есть что цитировать
function isQuote(btn)
{
	if(!getSelectionContent()){
		btn.style.cursor='no-drop'
	}else{
		btn.style.cursor='pointer'
	}
}

//Цитирование
function setQuote(e)
{
	var quote=getFormatText(getSelectionContent('html'));
	if(quote){
		pasteText('<quote>'+quote+'</quote>')
	}else{
		alert('Не выделен текст для цитирования')
	}
	return doSomething(e);
}

//Ответ
function setAnswer(e)
{
	e=e || window.event;
	var el=e.target || e.srcElement;
	
	var quote=getFormatText(document.getElementById(el.getAttribute('cid')));
	if(quote)pasteText('<quote>'+quote+'</quote>');
	
	return doSomething(e);
}

//Правильно форматирует фрагмент HTML разметки
function getFormatText(node)
{
	if(!node)return;
	var markup='';
	var childs=node.childNodes;
	for(var i=0;i<childs.length;i++){
		if(childs[i].nodeType==3){
			markup+=childs[i].nodeValue
		}else{
			var nName=childs[i].nodeName.toLowerCase();
			switch(nName){
				case 'br':
					markup+='<br/>';
					break;
				case 'blockquote':
					markup+='<quote>'+getFormatText(childs[i])+'</quote>'
					break;
				case 'b':
					markup+='<'+nName+'>'+getFormatText(childs[i])+'</'+nName+'>'
					break;
			}
		}
	}
	return markup
}

//Вставка текста
function pasteText(text)
{
	var edit=document.getElementById('forum-edit');
	if(!edit){alert('Вам необходимо войти на сайт, или зарегистрироваться');return}
	var pos=getSelectionStart(edit);
	edit.value=edit.value.substring(0,pos)+text+edit.value.substring(pos);
}
