function init_forum()
{
var maxqlength=20;

        if($('forum-threads') == null)
                return false;
        objcts=$$('span.thread-status');
        objcts.each(function(objct){
                objct.onclick = function(span){
                                theme=$('theme:'+objct.readAttribute('alt')).innerHTML;
                                if(theme.length > maxqlength+3)
                                                theme=theme.substring(0, maxqlength)+'...';
                                        if(confirm('Изменить статус треда \"'+theme+'\" ?'))
                                                load_url('?action=switch-status&id='+objct.readAttribute('alt'), 'forum-threads', forum_init_threads);
                        return false;
                };
        });

        objcts=$$('span.modify-thread');
        objcts.each(function(objct){
                objct.onclick = function(){
                        load_url('?action=modify-thread&id='+objct.readAttribute('alt'), 'forum-threads', forum_init_threads);
                        return false;
                };
        });

        objcts=$$('span.delete-thread');
        objcts.each(function(objct){
            objct.onclick = function(span){
                        theme=$('theme:'+objct.readAttribute('alt')).innerHTML;
                        if(theme.length > maxqlength+3)
                                        theme=theme.substring(0, maxqlength)+'...';
                                if(confirm('Удалить тред \"'+theme+'\" ?'))
                                        load_url('?action=delete-thread&id='+objct.readAttribute('alt'), 'forum-threads', forum_init_threads);
                    return false;
            };
        });

        function forum_init_threads()
        {
                        init_interlaced();
                        init_forum();
        }
        return false;
}

function quotation(from, to)
{
        var d = $(from);
	var area=$(to)

	if(!d || !area)
                return;

	var quote = new String(get_selection());

	if(quote=='')
        {
		if (d.innerText)
                {
			quote = d.innerText;
		}else if (d.innerHTML){
			quote = d.innerHTML;
			quote = quote.replace(/[\r\n]/g, "");
			quote = quote.replace(/<br>/g, "\n");
			quote = quote.replace(/<[^>]+>/g, "");
			quote = quote.replace(/&gt;/g, ">");
			quote = quote.replace(/&lt;/g, "<");
			quote = quote + "\n";
		}
		quote = quote.replace(/\r/g, "");
		quote = quote.replace(/\n\n/g, "\n");
	}

	if(quote.match(/^\s*[^>]/)) quote = quote.replace(/^\s*/,'> ');
	quote = quote.replace(/\s*$/,'');

        area.focus();
	area.value += quote;
	area.value += "\n\n";
}

function get_selection()
{
	var quote = '';
	if (document.selection)
		quote = document.selection.createRange().text;
	else if (document.getSelection)
		quote = document.getSelection();
	else if (window.getSelection)
		quote = window.getSelection();
	return quote;
}

function tctrl(tag)
{
	var txtarea = $('new-message')

	if (tag)
	{
		var tagOpen = "[" + tag + "]";
		var tagClose = "[/" + tag + "]";
		var sampleText = "";
		switch(tag) {
			case 'code': sampleText = "фрагмент кода";	break
			case 'spoiler': sampleText = "текст спойлера";	break
			case 'img': sampleText = "ссылка на картинку";	break
			case 'quote': sampleText = "цитируемый текст";	break
			default: samleText = "текст";
		 }
	}
	else
	{
		var tagOpen = "[";
		var tagClose = "]";
		var sampleText = "выделенный текст";
	}

	// IE
	if(document.selection	&& !is_gecko) {
		var theSelection = document.selection.createRange().text;
		var replaced = true;
		if(!theSelection){
			replaced = false;
			theSelection=sampleText;
		}
		txtarea.focus();

		text = theSelection;
		if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any
			theSelection = theSelection.substring(0, theSelection.length - 1);
			r = document.selection.createRange();
			r.text = tagOpen + theSelection + tagClose + " ";
		} else {
			r = document.selection.createRange();
			r.text = tagOpen + theSelection + tagClose;
		}
		if(!replaced){
			r.moveStart('character',-text.length-tagClose.length);
			r.moveEnd('character',-tagClose.length);
		}
		r.select();
	// Mozilla
	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
		var replaced = false;
		var startPos = txtarea.selectionStart;
		var endPos	 = txtarea.selectionEnd;
		if(endPos - startPos) replaced = true;
		var scrollTop=txtarea.scrollTop;
		var myText = (txtarea.value).substring(startPos, endPos);
		if(!myText) { myText=sampleText;}
		if(myText.charAt(myText.length - 1) == " "){ // exclude ending space char, if any
			subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
		} else {
			subst = tagOpen + myText + tagClose;
		}
		txtarea.value = txtarea.value.substring(0, startPos) + subst +
										txtarea.value.substring(endPos, txtarea.value.length);
		txtarea.focus();

		//set new selection
		if(replaced){
			var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
			txtarea.selectionStart=cPos;
			txtarea.selectionEnd=cPos;
		}else{
			txtarea.selectionStart=startPos+tagOpen.length;
			txtarea.selectionEnd=startPos+tagOpen.length+myText.length;
		}
		txtarea.scrollTop=scrollTop;
	// All others
	} else {
		var copy_alertText=alertText;
		var re1=new RegExp("\\$1","g");
		var re2=new RegExp("\\$2","g");
		copy_alertText=copy_alertText.replace(re1,sampleText);
		copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose);
		var text;
		if (sampleText) {
			text=prompt(copy_alertText);
		} else {
			text="";
		}
		if(!text) { text=sampleText;}
		text=tagOpen+text+tagClose;
		//append to the end
		txtarea.value += "\n"+text;

		// in Safari this causes scrolling
		if(!is_safari) {
			txtarea.focus();
		}

	}
	// reposition cursor if possible
	if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
}
