function wrapSelection(elementid,tag) {

var textarea = getObject(elementid)


var selection = new Selection(textarea);
var s = selection.create();


lStart = s.start
lEnd = s.end


sLeft = Left(textarea.value,lStart)
sOpenTag = '[' + tag + ']'
sMid = Mid(textarea.value,lStart,lEnd)
sCloseTag = '[/' + tag + ']'
sRight = Right(textarea.value,lEnd)


sNewValue = ''
// before the selection
sNewValue = sNewValue + sLeft

// the opening tag
sNewValue = sNewValue + sOpenTag

lNewStart = sNewValue.length

// the text in the selection
sNewValue = sNewValue + sMid

lNewEnd = sNewValue.length

// the closing tag							
sNewValue = sNewValue + sCloseTag

// after the selection
sNewValue = sNewValue + sRight

textarea.value = sNewValue



setCaretPosition(textarea,lNewStart,lNewEnd)
}

function Left(str, len){
	return str.slice(0,len)
}
function Right(str, len){
	return str.slice(len,str.length)
}

function Mid(str,start,end){
	return str.slice(start,end)
}

function setCaretPosition(ctrl,start,end)
{

    if(ctrl.setSelectionRange)
    {
        ctrl.focus();
        ctrl.setSelectionRange(start,end);
    }
    else if (ctrl.createTextRange) {
		
		sValue = Left(ctrl.value,start)
		
		vbCrLfCount = sValue.split('\r').length - 1
		
		start -= vbCrLfCount
		end -= vbCrLfCount
		
        var range = ctrl.createTextRange();
        range.collapse(true);
        range.moveEnd('character', end);
        range.moveStart('character', start);
        range.select();
    }
}