<script language="JavaScript" type="text/JavaScript"><!--
//----------------------------------------------------------------------------------------
// Modified by gadfly 08/10/2007
// Source from SMF (a free, professional grade software package)
// http://docs.simplemachines.org/index.php?topic=57
//
// ChangeLog - 08/10/2007
// * Removed IE specific function storeCaret() (use <img unselectable...> instead)
// * Move the caret next to '=' if necessary
// * Changes made to selection range
//
//----------------------------------------------------------------------------------------
// function sendText(tag, tso)
//
// @Param tag: <String>
// BBCode Tag: ['url', 'img', 'b', 'i', 'u', 'color', 'size', 'quote', 'list', 'code']
// required
//
// @Param tso: <String>
// Tag Specific Option:
// '=' as in [color=][/color]
// '][*' as in [list][*][/list]
// optional
//
function sendText(tag, tso)
{
if (!tso) tso = "";
var txtArea = document.xyspost.body;
var tagLeft = "[" + tag + tso + "]", tagRight = "[/" + tag + "]";
if (txtArea.createTextRange) // IE
{
var caret = document.selection.createRange(), txt = caret.text;
var sel = tagLeft + txt + tagRight;
var end = -tagRight.length, start = end - txt.length;
caret.text = txt.charAt(txt.length - 1) == ' ' ? sel + ' ' : sel;
if (tso == "=") end = start = start - caret.text.length - 1;
caret.moveStart("character", start);
caret.moveEnd("character", end);
caret.select();
}
else if (txtArea.setSelectionRange) // W3C standard
{
var top = txtArea.scrollTop; // save scrollTop
var start = txtArea.selectionStart, end = txtArea.selectionEnd, txt = txtArea.value;
var sel = txt.substring(start, end);
txtArea.value = txt.substr(0, start) + tagLeft + sel + tagRight + txt.substr(end); // insert bbcode
start += tagLeft.length; // set the new selected
end = start + sel.length; // range of the textbox
if (tso == "=") end = --start; // move the cursor next to '=' without selecting text if necessary
txtArea.setSelectionRange(start, end);
txtArea.focus();
txtArea.scrollTop = top // restore
}
else
{
txtArea.value += tagLeft + tagRight;
txtArea.focus(txtArea.value.length - 1);
}
}
//--></script>