924 lines
20 KiB
JavaScript
924 lines
20 KiB
JavaScript
//------------------------------------------
|
|
// Invision Power Board 2.1.7
|
|
// STD Editor Functions
|
|
// (c) 2005 Invision Power Services, Inc.
|
|
//
|
|
// http://www.invisionboard.com
|
|
// SHOULD BE CALLED AFTER ipb_editor.js
|
|
//------------------------------------------
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// INIT
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
var i_am = 'std';
|
|
var rtewindow;
|
|
var buttonbar;
|
|
|
|
var opentags =
|
|
{
|
|
'b' : 0,
|
|
'i' : 0,
|
|
's' : 0,
|
|
'u' : 0,
|
|
'img' : 0,
|
|
'quote' : 0,
|
|
'left' : 0,
|
|
'center' : 0,
|
|
'right' : 0,
|
|
'color' : 0,
|
|
'background' : 0,
|
|
'indent' : 0,
|
|
'code' : 0
|
|
};
|
|
|
|
var tags_to_div =
|
|
{
|
|
'b' : 'do_bold',
|
|
'i' : 'do_italic',
|
|
's' : 'do_strikethrough',
|
|
'u' : 'do_underline',
|
|
'quote' : 'do_quote',
|
|
'left' : 'do_justifyleft',
|
|
'center' : 'do_justifycenter',
|
|
'right' : 'do_justifyright',
|
|
'color' : 'forecolor',
|
|
'background' : 'hilitecolor',
|
|
'indent' : 'do_indent',
|
|
'code' : 'do_code'
|
|
};
|
|
|
|
var rte_to_std =
|
|
{
|
|
'forecolor' : 'color',
|
|
'hilitecolor' : 'background'
|
|
};
|
|
|
|
var easymode = 0;
|
|
|
|
// IE bug fix
|
|
var ie_range_cache = '';
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// INIT
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function init_std_editor()
|
|
{
|
|
//--------------------------------------------
|
|
// Pull in width of textarea
|
|
//--------------------------------------------
|
|
|
|
try
|
|
{
|
|
rtewindow = document.getElementById( 'postcontent' );
|
|
oldwidth = parseInt(document.getElementById( 'postcontent' ).style.width);
|
|
buttonbar = document.getElementById( 'std-table-buttons' );
|
|
widthunit = document.getElementById( 'postcontent' ).style.width.match( /%/ ) ? '%' : 'px';
|
|
|
|
if ( widthunit == 'px' )
|
|
{
|
|
if ( is_opera )
|
|
{
|
|
document.getElementById( 'postcontent' ).style.width = oldwidth - 4 + widthunit;
|
|
buttonbar.style.width = parseInt( buttonbar.style.width ) - 4 + widthunit;
|
|
}
|
|
else if ( is_safari )
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
document.getElementById( 'postcontent' ).style.width = oldwidth - 6 + widthunit;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( is_ie || is_moz )
|
|
{
|
|
document.getElementById( 'postcontent' ).style.width = oldwidth - 1 + widthunit;
|
|
}
|
|
}
|
|
}
|
|
catch(e)
|
|
{}
|
|
|
|
cvalue = my_getcookie( "bbmode" );
|
|
|
|
if ( cvalue == 1 )
|
|
{
|
|
document.getElementById('togglebbmode').value = js_bbeasy_on;
|
|
easymode = 1;
|
|
}
|
|
else
|
|
{
|
|
document.getElementById('togglebbmode').value = js_bbeasy_off;
|
|
easymode = 0;
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Toggle button highlighting (used when clicked on)
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function toggle_button( tag )
|
|
{
|
|
//--------------------------------------------
|
|
// Change the button status
|
|
// Ensure we're not looking for FONT, SIZE or COLOR as these
|
|
// buttons don't exist, they are select lists instead.
|
|
//--------------------------------------------
|
|
|
|
if ( (tag == 'font') || (tag == 'size') )
|
|
{
|
|
return;
|
|
}
|
|
|
|
if ( opentags[ tag ] )
|
|
{
|
|
document.getElementById( tags_to_div[ tag ] ).className = 'rteimage';
|
|
|
|
// Turn off
|
|
opentags[ tag ] = 0;
|
|
}
|
|
else
|
|
{
|
|
document.getElementById( tags_to_div[ tag ] ).className = 'rteImageRaised';
|
|
|
|
// Turn on
|
|
opentags[ tag ] = 1;
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Set BBCode mode
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function toggle_bbmode(mVal)
|
|
{
|
|
if ( easymode )
|
|
{
|
|
document.getElementById('togglebbmode').value = js_bbeasy_off;
|
|
easymode = 0;
|
|
}
|
|
else
|
|
{
|
|
document.getElementById('togglebbmode').value = js_bbeasy_on;
|
|
easymode = 1;
|
|
}
|
|
|
|
my_setcookie( 'bbmode', easymode, 1 );
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Get easy mode state
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function get_easy_mode_state()
|
|
{
|
|
//--------------------------------------------
|
|
// Returns true if we've chosen easy mode
|
|
//--------------------------------------------
|
|
|
|
if ( easymode )
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Pop open and set up the color palette
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function popcolor( command )
|
|
{
|
|
//-------------------------------
|
|
// Already open?
|
|
//-------------------------------
|
|
|
|
if ( opentags[ rte_to_std[ command ] ] )
|
|
{
|
|
//--------------------------------------------
|
|
// Smart close tags
|
|
//--------------------------------------------
|
|
|
|
smart_close_tags( rte_to_std[ command ] );
|
|
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
//-------------------------------
|
|
// Save current values
|
|
//-------------------------------
|
|
|
|
parent.command = command;
|
|
|
|
if ( is_ie )
|
|
{
|
|
postfieldobj.focus();
|
|
ie_range_cache = document.selection.createRange();
|
|
}
|
|
|
|
//-------------------------------
|
|
// Position and show color palette
|
|
//-------------------------------
|
|
|
|
buttonElement = document.getElementById(command);
|
|
|
|
var iLeftPos = getOffsetLeft(buttonElement);
|
|
var iTopPos = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 30);
|
|
|
|
document.getElementById('cp').style.left = (iLeftPos) + "px";
|
|
document.getElementById('cp').style.top = (iTopPos) + "px";
|
|
|
|
if (document.getElementById('cp').style.visibility == "hidden")
|
|
{
|
|
document.getElementById('cp').style.visibility = "visible";
|
|
document.getElementById('cp').style.display = "inline";
|
|
}
|
|
else
|
|
{
|
|
document.getElementById('cp').style.visibility = "hidden";
|
|
document.getElementById('cp').style.display = "none";
|
|
}
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Write the color
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function setColor(color)
|
|
{
|
|
var parentCommand = parent.command;
|
|
|
|
if ( parentCommand == "hilitecolor" )
|
|
{
|
|
if ( wrap_tags("[background=" +color+ "]", "[/background]", true ) )
|
|
{
|
|
toggle_button( "background" );
|
|
pushstack(bbtags, "background");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( wrap_tags("[color=" +color+ "]", "[/color]", true ) )
|
|
{
|
|
toggle_button( "color" );
|
|
pushstack(bbtags, "color");
|
|
}
|
|
}
|
|
|
|
document.getElementById('cp').style.visibility = "hidden";
|
|
document.getElementById('cp').style.display = "none";
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// EMOTICONS
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function emoticon(theSmilie)
|
|
{
|
|
doInsert(" " + theSmilie + " ", "", false);
|
|
|
|
if ( (ua_vers >= 4) && is_ie && is_win && emowindow != 'undefined' )
|
|
{
|
|
emowindow.focus();
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// ALTER FONT
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function alterfont(theval, thetag)
|
|
{
|
|
if (theval == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if ( wrap_tags("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true ) )
|
|
{
|
|
pushstack(bbtags, thetag);
|
|
}
|
|
|
|
postformobj.ffont.selectedIndex = 0;
|
|
postformobj.fsize.selectedIndex = 0;
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// SIMPLE TAGS (such as B, I S U, etc)
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function simpletag(thetag)
|
|
{
|
|
var tagOpen = opentags[ thetag ];
|
|
|
|
if ( get_easy_mode_state() )
|
|
{
|
|
inserttext = prompt(prompt_start + "\n[" + thetag + "]xxx[/" + thetag + "]");
|
|
|
|
if ( (inserttext != null) && (inserttext != "") )
|
|
{
|
|
wrap_tags("[" + thetag + "]" + inserttext + "[/" + thetag + "] ", "", false);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( tagOpen == 0 )
|
|
{
|
|
if ( wrap_tags("[" + thetag + "]", "[/" + thetag + "]", true ) )
|
|
{
|
|
//--------------------------------------------
|
|
// Toggle
|
|
//--------------------------------------------
|
|
|
|
toggle_button( thetag );
|
|
|
|
pushstack(bbtags, thetag);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//--------------------------------------------
|
|
// Smart close tags
|
|
//--------------------------------------------
|
|
|
|
smart_close_tags( thetag );
|
|
}
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// List tag
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function tag_list( type )
|
|
{
|
|
var listvalue = "init";
|
|
var thelist = "";
|
|
|
|
opentag = ( type == 'ordered' ) ? '[list=1]' : '[list]';
|
|
|
|
while ( (listvalue != "") && (listvalue != null) )
|
|
{
|
|
listvalue = prompt(list_prompt, "");
|
|
|
|
if ( (listvalue != "") && (listvalue != null) )
|
|
{
|
|
thelist = thelist+"[*]"+listvalue+"\n";
|
|
}
|
|
}
|
|
|
|
if ( thelist != "" )
|
|
{
|
|
wrap_tags( opentag + "\n" + thelist + "[/list]\n", "");
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// URL tag
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function tag_url()
|
|
{
|
|
var FoundErrors = '';
|
|
|
|
//----------------------------------------
|
|
// Do we have ranged text?
|
|
//----------------------------------------
|
|
|
|
if ( check_range() )
|
|
{
|
|
//----------------------------------------
|
|
// Yes, just ask for the URL and wrap
|
|
//----------------------------------------
|
|
|
|
var enterURL = prompt(text_enter_url, "http://");
|
|
|
|
if ( ! enterURL)
|
|
{
|
|
alert(error_no_url);
|
|
return;
|
|
}
|
|
|
|
wrap_tags( "[url="+enterURL+"]", "[/url]", "" );
|
|
}
|
|
else
|
|
{
|
|
var enterURL = prompt(text_enter_url, "http://");
|
|
var enterTITLE = prompt(text_enter_url_name, jsfile_myweb_lang );
|
|
|
|
if ( ! enterURL)
|
|
{
|
|
FoundErrors += " " + error_no_url;
|
|
}
|
|
if ( ! enterTITLE)
|
|
{
|
|
FoundErrors += " " + error_no_title;
|
|
}
|
|
|
|
if ( FoundErrors )
|
|
{
|
|
alert( jsfile_error_lang +FoundErrors);
|
|
return;
|
|
}
|
|
|
|
wrap_tags("[url="+enterURL+"]"+enterTITLE+"[/url]", "");
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Image tag
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function tag_image()
|
|
{
|
|
var FoundErrors = '';
|
|
|
|
//----------------------------------------
|
|
// Do we have ranged text?
|
|
//----------------------------------------
|
|
|
|
if ( check_range() )
|
|
{
|
|
//----------------------------------------
|
|
// Yes, just wrap text
|
|
//----------------------------------------
|
|
|
|
wrap_tags( "[img]", "[/img]", "" );
|
|
}
|
|
else
|
|
{
|
|
var enterURL = prompt(text_enter_image, "http://");
|
|
|
|
if ( ! enterURL )
|
|
{
|
|
alert(error_no_url);
|
|
return;
|
|
}
|
|
|
|
wrap_tags("[img]"+enterURL+"[/img]", "");
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Email tag
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function tag_email()
|
|
{
|
|
//----------------------------------------
|
|
// Do we have ranged text?
|
|
//----------------------------------------
|
|
|
|
if ( check_range() )
|
|
{
|
|
//----------------------------------------
|
|
// Yes, just wrap text
|
|
//----------------------------------------
|
|
|
|
wrap_tags( "[email]", "[/email]", "" );
|
|
}
|
|
else
|
|
{
|
|
var emailAddress = prompt(text_enter_email, "");
|
|
|
|
if ( ! emailAddress )
|
|
{
|
|
alert(error_no_email);
|
|
return;
|
|
}
|
|
|
|
wrap_tags( "[email]"+emailAddress+"[/email]", "" );
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Do we have ranged text?
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function check_range()
|
|
{
|
|
var has_range = false;
|
|
|
|
//----------------------------------------
|
|
// It's IE!
|
|
//----------------------------------------
|
|
|
|
if ( (ua_vers >= 4) && is_ie && is_win )
|
|
{
|
|
var sel = document.selection;
|
|
var rng = sel.createRange();
|
|
rng.colapse;
|
|
|
|
if ( (sel.type == "Text" || sel.type == "None") && rng != null )
|
|
{
|
|
if ( rng.text.length > 0)
|
|
{
|
|
has_range = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
//----------------------------------------
|
|
// It's MOZZY!
|
|
//----------------------------------------
|
|
|
|
else if ( postfieldobj.selectionEnd )
|
|
{
|
|
var ss = postfieldobj.selectionStart;
|
|
var st = postfieldobj.scrollTop;
|
|
var es = postfieldobj.selectionEnd;
|
|
|
|
if (es <= 2)
|
|
{
|
|
es = postfieldobj.textLength;
|
|
}
|
|
|
|
var start = (postfieldobj.value).substring(0, ss);
|
|
var middle = (postfieldobj.value).substring(ss, es);
|
|
var end = (postfieldobj.value).substring(es, postfieldobj.textLength);
|
|
|
|
//-----------------------------------
|
|
// text range?
|
|
//-----------------------------------
|
|
|
|
if (postfieldobj.selectionEnd - postfieldobj.selectionStart > 0)
|
|
{
|
|
has_range = true;
|
|
}
|
|
}
|
|
|
|
return has_range;
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Check message length
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function check_length()
|
|
{
|
|
MessageLength = postfieldobj.value.length;
|
|
message = "";
|
|
|
|
if (MessageMax > 0)
|
|
{
|
|
message = js_post + ": " + js_max_length + " " + MessageMax + " " + js_characters +".";
|
|
}
|
|
else
|
|
{
|
|
message = "";
|
|
}
|
|
|
|
alert(message + " " + js_used + " " + MessageLength + " " + js_characters + ".");
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// GENERAL INSERT FUNCTION
|
|
// opentext : opening tag
|
|
// closetext: closing tag, used if we have selected text
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function wrap_tags(opentext, closetext, issingle)
|
|
{
|
|
var has_closed = false;
|
|
|
|
if ( ! issingle )
|
|
{
|
|
issingle = false;
|
|
}
|
|
|
|
//----------------------------------------
|
|
// It's IE!
|
|
//----------------------------------------
|
|
|
|
if ( (ua_vers >= 4) && is_ie && is_win )
|
|
{
|
|
if ( postfieldobj.isTextEdit )
|
|
{
|
|
postfieldobj.focus();
|
|
|
|
var sel = document.selection;
|
|
|
|
var rng = ie_range_cache ? ie_range_cache : sel.createRange();
|
|
|
|
var stored_range = rng.duplicate()
|
|
stored_range.moveToElementText( postfieldobj );
|
|
stored_range.setEndPoint( 'EndToEnd', rng );
|
|
|
|
// Stores start position of text selection
|
|
postfieldobj.selectionStart = stored_range.text.length - rng.text.length;
|
|
// Stores end position of text selection
|
|
postfieldobj.selectionEnd = postfieldobj.selectionStart + rng.text.length;
|
|
|
|
rng.colapse;
|
|
|
|
if ( (sel.type == "Text" || sel.type == "None") && rng != null)
|
|
{
|
|
if (closetext != "" && rng.text && rng.text.length > 0)
|
|
{
|
|
opentext += rng.text + closetext;
|
|
}
|
|
else if ( issingle )
|
|
{
|
|
has_closed = true;
|
|
}
|
|
|
|
rng.text = rng.text.charAt(rng.text.length - 1) == ' ' ? opentext + ' ' : opentext;
|
|
}
|
|
else
|
|
{
|
|
postfieldobj.value += opentext;
|
|
has_closed = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
postfieldobj.value += opentext;
|
|
has_closed = true;
|
|
}
|
|
|
|
ie_range_cache = null;
|
|
|
|
rng.select();
|
|
}
|
|
|
|
//----------------------------------------
|
|
// It's MOZZY!
|
|
//----------------------------------------
|
|
|
|
else if ( postfieldobj.selectionEnd )
|
|
{
|
|
var ss = postfieldobj.selectionStart;
|
|
var st = postfieldobj.scrollTop;
|
|
var es = postfieldobj.selectionEnd;
|
|
|
|
if (es <= 0)
|
|
{
|
|
es = postfieldobj.textLength;
|
|
}
|
|
|
|
var start = (postfieldobj.value).substring(0, ss);
|
|
var middle = (postfieldobj.value).substring(ss, es);
|
|
var end = (postfieldobj.value).substring(es, postfieldobj.textLength);
|
|
|
|
//-----------------------------------
|
|
// text range?
|
|
//-----------------------------------
|
|
|
|
if ( postfieldobj.selectionEnd - postfieldobj.selectionStart > 0 )
|
|
{
|
|
middle = opentext + middle + closetext;
|
|
}
|
|
else
|
|
{
|
|
middle = opentext + middle;
|
|
|
|
if ( issingle )
|
|
{
|
|
has_closed = true;
|
|
}
|
|
}
|
|
|
|
postfieldobj.value = start + middle + end;
|
|
|
|
var cpos = ss + (middle.length);
|
|
|
|
postfieldobj.selectionStart = cpos;
|
|
postfieldobj.selectionEnd = cpos;
|
|
postfieldobj.scrollTop = st;
|
|
}
|
|
|
|
//----------------------------------------
|
|
// It's CRAPPY!
|
|
//----------------------------------------
|
|
|
|
else
|
|
{
|
|
if ( issingle )
|
|
{
|
|
has_closed = false;
|
|
}
|
|
|
|
postfieldobj.value += opentext + ' ' + closetext;
|
|
}
|
|
|
|
postfieldobj.focus();
|
|
|
|
return has_closed;
|
|
}
|
|
|
|
/*--------------------------------------------*/
|
|
// Make current STD window (n)px bigger
|
|
/*--------------------------------------------*/
|
|
|
|
function std_window_resize( pix )
|
|
{
|
|
var box = postfieldobj;
|
|
var cur_height = parseInt( box.style.height ) ? parseInt( box.style.height ) : 300;
|
|
var new_height = cur_height + pix;
|
|
|
|
if ( new_height > 0 )
|
|
{
|
|
box.style.height = new_height + "px";
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Validate form (must always have this method defined!)
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function ValidateForm( isMsg )
|
|
{
|
|
MessageLength = postfieldobj.value.length;
|
|
errors = "";
|
|
|
|
//-----------------------------------------
|
|
// Check for remove attachments
|
|
//-----------------------------------------
|
|
|
|
try
|
|
{
|
|
if ( postformobj.removeattachid.value > 0 )
|
|
{
|
|
okdelete = confirm( js_remove_attach );
|
|
|
|
if ( okdelete == true )
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
postformobj.removeattachid.value = 0;
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
catch(error)
|
|
{
|
|
//
|
|
}
|
|
|
|
if ( isMsg == 1)
|
|
{
|
|
if ( postformobj.msg_title.value.length < 2 )
|
|
{
|
|
errors = js_msg_no_title;
|
|
}
|
|
}
|
|
|
|
if ( MessageLength < 2 )
|
|
{
|
|
errors = js_no_message;
|
|
}
|
|
|
|
if ( MessageMax !=0 )
|
|
{
|
|
if (MessageLength > MessageMax)
|
|
{
|
|
errors = js_max_length + " " + MessageMax + " " + js_characters + ". " + js_current + ": " + MessageLength;
|
|
}
|
|
}
|
|
|
|
if ( errors != "" && ! Override )
|
|
{
|
|
alert(errors);
|
|
return false;
|
|
}
|
|
|
|
else
|
|
{
|
|
try
|
|
{
|
|
postformobj.submit.disabled = true;
|
|
}
|
|
catch(e)
|
|
{
|
|
try
|
|
{
|
|
postformobj.dosubmit.disabled = true;
|
|
}
|
|
catch(e) { }
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
function doInsert(ibTag, ibClsTag, isSingle)
|
|
{
|
|
var isClose = false;
|
|
var obj_ta = fombj.Post;
|
|
|
|
//----------------------------------------
|
|
// It's IE!
|
|
//----------------------------------------
|
|
if ( (ua_vers >= 4) && is_ie && is_win)
|
|
{
|
|
if (obj_ta.isTextEdit)
|
|
{
|
|
obj_ta.focus();
|
|
var sel = document.selection;
|
|
var rng = sel.createRange();
|
|
rng.colapse;
|
|
if((sel.type == "Text" || sel.type == "None") && rng != null)
|
|
{
|
|
if(ibClsTag != "" && rng.text.length > 0)
|
|
ibTag += rng.text + ibClsTag;
|
|
else if(isSingle)
|
|
isClose = true;
|
|
|
|
rng.text = ibTag;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(isSingle)
|
|
{
|
|
isClose = true;
|
|
}
|
|
|
|
obj_ta.value += ibTag;
|
|
}
|
|
}
|
|
//----------------------------------------
|
|
// It's MOZZY!
|
|
//----------------------------------------
|
|
|
|
else if ( obj_ta.selectionEnd )
|
|
{
|
|
var ss = obj_ta.selectionStart;
|
|
var st = obj_ta.scrollTop;
|
|
var es = obj_ta.selectionEnd;
|
|
|
|
if (es <= 2)
|
|
{
|
|
es = obj_ta.textLength;
|
|
}
|
|
|
|
var start = (obj_ta.value).substring(0, ss);
|
|
var middle = (obj_ta.value).substring(ss, es);
|
|
var end = (obj_ta.value).substring(es, obj_ta.textLength);
|
|
|
|
//-----------------------------------
|
|
// text range?
|
|
//-----------------------------------
|
|
|
|
if (obj_ta.selectionEnd - obj_ta.selectionStart > 0)
|
|
{
|
|
middle = ibTag + middle + ibClsTag;
|
|
}
|
|
else
|
|
{
|
|
middle = ibTag + middle;
|
|
|
|
if (isSingle)
|
|
{
|
|
isClose = true;
|
|
}
|
|
}
|
|
|
|
obj_ta.value = start + middle + end;
|
|
|
|
var cpos = ss + (middle.length);
|
|
|
|
obj_ta.selectionStart = cpos;
|
|
obj_ta.selectionEnd = cpos;
|
|
obj_ta.scrollTop = st;
|
|
|
|
|
|
}
|
|
//----------------------------------------
|
|
// It's CRAPPY!
|
|
//----------------------------------------
|
|
else
|
|
{
|
|
if (isSingle)
|
|
{
|
|
isClose = true;
|
|
}
|
|
|
|
obj_ta.value += ibTag;
|
|
}
|
|
|
|
obj_ta.focus();
|
|
|
|
return isClose;
|
|
}
|
|
var bbtags = new Array();
|
|
|
|
var fombj = document.REPLIER;
|
|
|
|
|
|
|