var dhtmlgoodies_tooltip = false;
	var dhtmlgoodies_tooltipShadow = false;
	var dhtmlgoodies_shadowSize = 4;
	var dhtmlgoodies_tooltipMaxWidth = 400;
	var dhtmlgoodies_tooltipMinWidth = 100;
	var dhtmlgoodies_iframe = false;
	var tooltip_is_msie = (navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('opera')==-1 && document.all)?true:false;
	function showTooltip(e,tooltipTxt)
	{
		
		var bodyWidth = Math.max(document.body.clientWidth,document.documentElement.clientWidth) - 20;
	
		if(!dhtmlgoodies_tooltip){
			dhtmlgoodies_tooltip = document.createElement('DIV');
			dhtmlgoodies_tooltip.id = 'dhtmlgoodies_tooltip';
			dhtmlgoodies_tooltipShadow = document.createElement('DIV');
			dhtmlgoodies_tooltipShadow.id = 'dhtmlgoodies_tooltipShadow';
			
			document.body.appendChild(dhtmlgoodies_tooltip);
			document.body.appendChild(dhtmlgoodies_tooltipShadow);	
			
			if(tooltip_is_msie){
				dhtmlgoodies_iframe = document.createElement('IFRAME');
				dhtmlgoodies_iframe.frameborder='5';
				dhtmlgoodies_iframe.style.backgroundColor='#FFFFFF';
				dhtmlgoodies_iframe.src = '#'; 	
				dhtmlgoodies_iframe.style.zIndex = 100;
				dhtmlgoodies_iframe.style.position = 'absolute';
				document.body.appendChild(dhtmlgoodies_iframe);
			}
			
		}
		
		dhtmlgoodies_tooltip.style.display='block';
		dhtmlgoodies_tooltipShadow.style.display='block';
		if(tooltip_is_msie)dhtmlgoodies_iframe.style.display='block';
		
		var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
		if(navigator.userAgent.toLowerCase().indexOf('safari')>=0)st=0; 
		var leftPos = e.clientX + 10;
		
		dhtmlgoodies_tooltip.style.width = null;	// Reset style width if it's set 
		dhtmlgoodies_tooltip.innerHTML = tooltipTxt;
		dhtmlgoodies_tooltip.style.left = leftPos + 'px';
		dhtmlgoodies_tooltip.style.top = e.clientY + 10 + st + 'px';

		
		dhtmlgoodies_tooltipShadow.style.left =  leftPos + dhtmlgoodies_shadowSize + 'px';
		dhtmlgoodies_tooltipShadow.style.top = e.clientY + 10 + st + dhtmlgoodies_shadowSize + 'px';
		
		if(dhtmlgoodies_tooltip.offsetWidth>dhtmlgoodies_tooltipMaxWidth){	/* Exceeding max width of tooltip ? */
			dhtmlgoodies_tooltip.style.width = dhtmlgoodies_tooltipMaxWidth + 'px';
		}
		
		var tooltipWidth = dhtmlgoodies_tooltip.offsetWidth;		
		if(tooltipWidth<dhtmlgoodies_tooltipMinWidth)tooltipWidth = dhtmlgoodies_tooltipMinWidth;
		
		
		dhtmlgoodies_tooltip.style.width = tooltipWidth + 'px';
		dhtmlgoodies_tooltipShadow.style.width = dhtmlgoodies_tooltip.offsetWidth + 'px';
		dhtmlgoodies_tooltipShadow.style.height = dhtmlgoodies_tooltip.offsetHeight + 'px';		
		
		if((leftPos + tooltipWidth)>bodyWidth){
			dhtmlgoodies_tooltip.style.left = (dhtmlgoodies_tooltipShadow.style.left.replace('px','') - ((leftPos + tooltipWidth)-bodyWidth)) + 'px';
			dhtmlgoodies_tooltipShadow.style.left = (dhtmlgoodies_tooltipShadow.style.left.replace('px','') - ((leftPos + tooltipWidth)-bodyWidth) + dhtmlgoodies_shadowSize) + 'px';
		}
		
		if(tooltip_is_msie){
			dhtmlgoodies_iframe.style.left = dhtmlgoodies_tooltip.style.left;
			dhtmlgoodies_iframe.style.top = dhtmlgoodies_tooltip.style.top;
			dhtmlgoodies_iframe.style.width = dhtmlgoodies_tooltip.offsetWidth + 'px';
			dhtmlgoodies_iframe.style.height = dhtmlgoodies_tooltip.offsetHeight + 'px';
		
		}
				
	}
	
	function hideTooltip()
	{
		dhtmlgoodies_tooltip.style.display='none';
		dhtmlgoodies_tooltipShadow.style.display='none';		
		if(tooltip_is_msie)dhtmlgoodies_iframe.style.display='none';		
	}

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.onmousedown = _textareaSaver;
	this.target.onmouseup = _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 setURL(id) { // Ссылка
    getTextAreaSelection(id).setSelectedText('<a href=>', '</a>');
    }
function setBold(id) { // Жирность
    getTextAreaSelection(id).setSelectedText('<b>', '</b>');
}
function setRed(id) { // Жирность
    getTextAreaSelection(id).setSelectedText('<font color=FF0000>', '</font>');
}
function setBoldItalic(id) { // Курсив
    getTextAreaSelection(id).setSelectedText('<b><i>', '</i></b>');
}
function setH2(id) { // Подчеркивание
    getTextAreaSelection(id).setSelectedText('<h2>', '</h2>');
}
function setH3(id) { // Подчеркивание
    getTextAreaSelection(id).setSelectedText('<h3>', '</h3>');
}
function setIMG(id) { // Подчеркивание
    getTextAreaSelection(id).setSelectedText('<img src=', '>');
}
function setIMG_CENTER(id) { // Подчеркивание
    getTextAreaSelection(id).setSelectedText('<CENTER><img src=', '></CENTER>');
}
function setIMG_RIGHT(id) { // Подчеркивание
    getTextAreaSelection(id).setSelectedText('<img src=', ' class=right_img align=right>');
}
function setIMG_CENTER_COMMENT(id) { // Подчеркивание
    getTextAreaSelection(id).setSelectedText('<CENTER><img src=', '><br><I><B>Текст</B></I></CENTER>');
}
function setDIV(id) { // Подчеркивание
    getTextAreaSelection(id).setSelectedText('<div align=right><i>', '</i></div>');
}
function setHIDEtext(id) { // Подчеркивание
    getTextAreaSelection(id).setSelectedText('<B>Более подробно </B> <a href=\"javascript:;\" onclick=\"jQuery(\'#item_hide_text\').slideToggle()\"><font color=#CC0033>Показать »</font></a><div class=\"b-vox-populi-choise\" id=\"item_hide_text\" style=\"display: none\">\n', '</div>');
}
function smile1(id) { // Ссылка
    getTextAreaSelection(id).setSelectedText(' [:)]');
    }
function smile2(id) { // Ссылка
    getTextAreaSelection(id).setSelectedText(' [;)]');
    }
function smile3(id) { // Ссылка
    getTextAreaSelection(id).setSelectedText(' [angry1]');
    }
function smile4(id) { // Ссылка
    getTextAreaSelection(id).setSelectedText(' [bad1]');
    }
function smile5(id) { // Ссылка
    getTextAreaSelection(id).setSelectedText(' [happy1]');
    }
function smile6(id) { // Ссылка
    getTextAreaSelection(id).setSelectedText(' [cool1]');
    }
function smile7(id) { // Ссылка
    getTextAreaSelection(id).setSelectedText(' [wow1]');
    }
function smile8(id) { // Ссылка
    getTextAreaSelection(id).setSelectedText(' [angry2]');
    }
