var user_agent = navigator.userAgent.toLowerCase();
var is_safari = ((user_agent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc."));
var is_opera  = (user_agent.indexOf('opera') != -1);
var is_ie = ((user_agent.indexOf('msie') != -1) && (!is_opera) && (!is_safari));
var is_moz = ((navigator.product == 'Gecko')  && (!is_opera) && (!is_safari));
var ua_version = parseInt(navigator.appVersion);

function insert_tag(obj, tag)
{
    if ( (ua_version >= 4) && is_ie)
    {
        if (obj.isTextEdit)
        {
            obj.focus();
            var sel = document.selection;
            var rng = sel.createRange();
            if((sel.type == "Text" || sel.type == "None") && rng != null)
            {
                rng.text = tag;
            }
        }
        else
        {
            obj.value += tag;
        }
    }
    else if (obj.selectionEnd)
    { 
        var ss = obj.selectionStart;
        var st = obj.scrollTop;
        var es = obj.selectionEnd;

        if (es <= 2)
        {
            es = obj.textLength;
        }
        
        var start  = (obj.value).substring(0, ss);
        var middle = (obj.value).substring(ss, es);
        var end    = (obj.value).substring(es, obj.textLength);

        middle = tag;
        obj.value = start + middle + end;

        var cpos = ss + (middle.length);

		obj.selectionStart = cpos;
        obj.selectionEnd   = cpos;
        obj.scrollTop      = st;
    }
    else
    {
        obj.value += tag;
    }
	
    obj.focus();

	return true;
}

function quote_comment(ta, name, text)
{
    var obj = $(ta);
    insert_tag(obj, '[quote name=' + name + ']' + text + '[/quote]' + "\n");
}