function replaceSelectedText(obj,cbFunc,tag) {
	obj.focus();
	if (document.selection) {
		var s = document.selection.createRange(); 
		//if (s.text) {
			eval("s.text="+cbFunc+"(s.text,'"+tag+"');");
			s.select();
			return true;
		//}
	} else if (typeof(obj.selectionStart)=="number") {
		//if (obj.selectionStart!=obj.selectionEnd) {
			var start = obj.selectionStart;
			var end = obj.selectionEnd;
			eval("var rs = "+cbFunc+"(obj.value.substr(start,end-start),'"+tag+"');");
			obj.value = obj.value.substr(0,start)+rs+obj.value.substr(end);
			obj.setSelectionRange(end,end);
		//}
		return true;
	}
return false;
}
function addSmileForum (smile) {
	replaceSelectedText(document.getElementById('f_message'),addSmileCode,smile);
}
function addSmileChat (smile) {
	replaceSelectedText(document.getElementById('chat_message_text'),addSmileCode,smile);
}
function addSmileBlogComment (smile) {
	replaceSelectedText(document.getElementById('comment_text'),addSmileCode,smile);
}


function addSmileCode (s,code) {
	return ':' + code + ':' + s;
}

function tagAround(s,tag) {
  return '<'+tag+'>'+s+'</'+tag+'>';
}
function bbAround(s,tag) {
  return '['+tag+']'+s+'[/'+tag+']';
}

function copySelected(qinf,date,pid)
{
	var txt='';
	if (document.getSelection) {
		txt=document.getSelection();
	} else if (document.selection) {
		txt=document.selection.createRange().text;
	}
	if (txt.replace(" ","") != "") {
		//txt='[quote name=\''+qinf+'\' date=\''+date+'\' post='+pid+']\n'+txt+'[/quote]\n';
	}
	return txt;
}

function forum_subscribe(id) {
	params = {'id': id, 'on_off': $F('forum_notif'+id)};
		new Ajax.Request('/urists/forum/ajax_forum_subscribe.php', {
			method: 'get',
			parameters: params,
			onCreate: function(process) {
				document.body.className = 'ajaxwait';
				$('forum_notif_res'+id).update('Подождите...');
			},
			onComplete: function(complete) {
				document.body.className = '';
				$('main_div').style.cursor = 'auto';
				$('forum_notif_res'+id).update(complete.responseText);
			}
		}
	);
}

function msg_edit(id, razdel) {
	var url = '';
	if (razdel == 'blog_comment') {
		url = '/urists/blogs/ajax_message_edit.php';
	} else {
		url = '/urists/forum/ajax_message_edit.php';
	}
	$('msg_e_sv'+id).hide();
	var trid = 'tr_msg_e_'+id;
	var row = new Element('tr', {'id': trid});
	var tdid = 'td_msg_e_'+id;
	var td = new Element('td', {'colspan': 2, 'id': tdid}).update('Подождите...');
	row.appendChild(td);
	$('tb'+id).appendChild(row);
	params = {'id': id, 'mode': 'edit'};
		new Ajax.Request(url, {
			method: 'get',
			parameters: params,
			onCreate: function(process) {
				document.body.className = 'ajaxwait';
			},
			onComplete: function(complete) {
				document.body.className = '';
				$('main_div').style.cursor = 'auto';
				$(tdid).update(complete.responseText);
			}
		}
	);
}
function msg_save(id, razdel) {
	var url = '';
	if (razdel == 'blog_comment') {
		url = '/urists/blogs/ajax_message_edit.php';
	} else {
		url = '/urists/forum/ajax_message_edit.php';
	}
	var trid = 'tr_msg_e_'+id;
	var text = null;
	if ($('msg_text'+id)) {
		text = $F('msg_text'+id);
	}
	var on_off = null;
	if ($('on_off'+id)) {
		on_off = $F('on_off'+id);
	}
	var bl = null;
	if ($('blacklist'+id)) {
		bl = $F('blacklist'+id);
	}
	var err = '';
	if (text == '') {
		err = 'Введите текст сообщения';
	}
	if (err != '') {
		alert(err);
	} else {
		var params = {'id': id, 'mode': 'save', 'komm': text, 'on_off': on_off, 'blacklist': bl};
			new Ajax.Request(url, {
				method: 'post',
				parameters: params,
				onCreate: function(process) {
					document.body.className = 'ajaxwait';
				},
				onComplete: function(complete) {
					document.body.className = '';
					$('main_div').style.cursor = 'auto';
					if (complete.responseText == 'ok') {
						$('msg_e_sv'+id).show();
						$(trid).remove();
						window.location.reload();
					} else {
						alert(complete.responseText);
					}
				}
			}
		);
	}
}

// Массив экземпляров объекта
var textAreaSelectionObjects = [];
// Получаем экземпляр объекта
function getTextAreaSelection(id) {
	if (typeof(textAreaSelectionObjects[id]) == "undefined") {
		textAreaSelectionObjects[id] = new textAreaSelectionHelper(id);
	}
	return textAreaSelectionObjects[id];
}
// Конструктор, принимает в качестве аргумента ID текстарии
function textAreaSelectionHelper(id) {
	var obj = document.getElementById(id);
	this.target = obj;
	// Создаем свойства carretHandler для доступа к объекту в контексте узла
	// из обработчиков событий
	this.target.carretHandler = this;
	// Добавляем обработчик событий
	this.target.onchange = _textareaSaver;
	this.target.onclick = _textareaSaver;
	this.target.onkeyup = _textareaSaver;
	this.target.onfocus = _textareaSaver;
	if(!document.selection) this.target.onSelect = _textareaSaver;
	// Свойства для запоминания позиции выделения
	this.start=-1;
	this.end=-1;
	this.scroll=-1;
	this.iesel=null;
}
// В прототип записываем методы
textAreaSelectionHelper.prototype = {
	// Получим выделение
	getSelectedText : function() {
	  return this.iesel? this.iesel.text: (this.start>=0&&this.end>this.start)? this.target.value.substring(this.start,this.end): "";
	},
	// Установим текстовые фрагменты до выделения - text
	// и после него, если нужно - secondtag
	setSelectedText : function(text, secondtag) {
	  if (this.iesel) {
		 if (typeof(secondtag) == "string") {
			var l = this.iesel.text.length;
			this.iesel.text = text + this.iesel.text + secondtag;
			this.iesel.moveEnd("character", -secondtag.length);
			this.iesel.moveStart("character", -l);   
		 } else {
			this.iesel.text = text;
		 }
		 this.iesel.select();
	  } else if (this.start >= 0 && this.end >= this.start) {
		 var left = this.target.value.substring(0, this.start);
		 var right = this.target.value.substr(this.end);
		 var scont = this.target.value.substring(this.start, this.end);
		 if (typeof(secondtag) == "string") {
			this.target.value = left + text + scont + secondtag + right;
			this.end = this.target.selectionEnd=this.start+text.length+scont.length;
			this.start = this.target.selectionStart = this.start + text.length;    
		 } else {
			this.target.value = left + text + right;
			this.end = this.target.selectionEnd = this.start + text.length;
			this.start = this.target.selectionStart = this.start + text.length;
		 }
		 this.target.scrollTop = this.scroll;
		 this.target.focus();
	  } else {
		 this.target.value += text + ((typeof(secondtag) == "string") ? secondtag: "");
		 if (this.scroll >= 0) this.target.scrollTop = this.scroll;
	  }
	}
}
// Обработчик событий. Занимается сохранением информации о выделении и позиции скролла
function _textareaSaver() {
	if(document.selection) {
		this.carretHandler.iesel = document.selection.createRange().duplicate();
	} else if(typeof(this.selectionStart) != "undefined") {
		this.carretHandler.start = this.selectionStart;
		this.carretHandler.end = this.selectionEnd;
		this.carretHandler.scroll = this.scrollTop;
	} else {
		this.carretHandler.start = this.carretHandler.end = -1;
	}
}
function setBB(id, code) {
	getTextAreaSelection(id).setSelectedText('['+code+']', '[/'+code+']');
}

function addQuote(ta_id, u, msg) {
	var txt = '';
	if (window.getSelection) {
		txt=window.getSelection();
	} else if (document.selection) {
		txt=document.selection.createRange().text;
	}
	if (txt!='') {
		var dop = '';
		if (u!='' && msg!='') {
			dop = ' u="'+u+'" msg="'+msg+'"';
		}
		$(ta_id).setValue($F(ta_id)+"\n"+'[quote'+dop+']'+txt+'[/quote]');
		window.location.href="#a_"+ta_id;
	} else {
		alert('Выделите текст для цитирования');
	}
}
