//------------------------------------------------------------ //- Rich editor public properties. //------------------------------------------------------------ var RichEdit_CurrentEditor = null; var RichEdit_CurrentRange = null; var RichEdit_PageChanged = false; //------------------------------------------------------------ //- Rich editor module declarations. //------------------------------------------------------------ var m_blnChanged = false; var m_blnSelecting = false; var m_objCaretPosition = null; var m_blnHTMLMode = false; var m_blnShowGrid = true; var RichEdit_CurrentBookmark = null; var m_objContextMenu = null; var m_objSelectedMenuItem = null; var m_objRestorePoint = null; var m_objCurrentRichTextEditor = null; var m_strCurrentMenu = 'main'; var m_objSelectedElement = null; var m_objInternalRestorePoint = null; //------------------------------------------------------------ //- Initializes all text editors. //------------------------------------------------------------ function RichEdit_OnLoad(editor){ var objToolbar = document.getElementById('Top' + editor.Id); objToolbar.style.display = 'none'; editor.AttachEventHandler('onfocus', function (e) { SetEditor(e, editor); } ); editor.AttachEventHandler('onmouseup', function (e) { TextEditor_CreateRestorePoint(); RichEdit_HideAll()} ); editor.AttachEventHandler('ondblclick', function (e) { TextEditor_ShowProperties(e);} ); editor.AttachEventHandler('onkeyup', function (e) { TextEditor_CreateRestorePoint();} ); editor.AttachEventHandler('onresize', function (e) { TextEditor_Resize(); } ); var parent = document.getElementById(editor.Id + "_wrapper"); parent.style.display = ""; m_objCurrentRichTextEditor = editor //---------------------------------------------------- //Fixes bug when loading empty table //---------------------------------------------------- RichEdit_ToggleGrid(true); RichEdit_ToggleGrid(true); //---------------------------------------------------- window.setTimeout(function() { try{ var txt = document.getElementById("txtTitle"); if(txt!=null){ if(!txt.disabled){ txt.focus(); } } else{ //FormItem var txt = window.parent.document.getElementById("txtTitle") if(txt!=null){ txt.focus(); } else{ //Definitions var txt = window.parent.document.getElementById("txtName") if(txt!=null){ txt.focus(); } } } } catch(err){} }, 100); var iframe = document.getElementById('RadEContentIframe' + editor.Id); if (iframe != null) { iframe.style.width = editor.Width; iframe.style.height = editor.Height; } } function RichEdit_SetupContent(editor_id, body, doc) { RichEdit_RenderBookmarkList(doc); } function TextEditor_Resize() { if(m_objCurrentRichTextEditor != null){ //Resize editor } } function RichEdit_OnClientModeChange(editor){ var htmlArea = document.getElementById("RadEContentTextarea" + editor.Id); if(!m_blnHTMLMode){ if(document.all){ htmlArea.style.width = (editor.GetWidth()-5) + "px"; htmlArea.style.height = (editor.GetHeight()-28) + "px"; } else{ htmlArea.style.width = (editor.GetWidth()-3) + "px"; htmlArea.style.height = (editor.GetHeight()-25) + "px"; } } else{ //htmlArea.style.width = "0px"; //htmlArea.style.height = "0px"; } } function SetEditor(e, editor){ m_objCurrentRichTextEditor = editor } //------------------------------------------------------------ //- Rich editor mouse events. //------------------------------------------------------------ function RichEdit_OnClick(e) { } function RichEdit_OnDblClick(e) { } function RichEdit_OnMouseUp(e) { //RichEdit_StoreSelection() } function TextEditor_ExecuteCommand(strEditorID, command, editor, objTool) { if (editor == null) { editor = m_objCurrentRichTextEditor } if(editor == null) return; if(command=='StripAll'){ editor.Document.execCommand("RemoveFormat", false, null); editor.Fire('StripCss', objTool); } else{ editor.Fire(command, objTool); } } /*------------------------------------------------------------ - Restores the selection point in the text editor ------------------------------------------------------------ */ function TextEditor_RestorePoint() { if (m_objRestorePoint != null) { m_objRestorePoint.Select() m_objCurrentRichTextEditor.ContentWindow.focus(); m_objCurrentRichTextEditor.SetActive(); } } function TextEditor_RestoreInternalPoint() { if (m_objInternalRestorePoint != null) { if(document.all){ m_objInternalRestorePoint.select() } else{ m_objInternalRestorePoint.collapse(true) } m_objCurrentRichTextEditor.ContentWindow.focus(); m_objCurrentRichTextEditor.SetActive(); } } function TextEditor_CreateRestorePoint() { if(m_objCurrentRichTextEditor != null){ m_objRestorePoint = m_objCurrentRichTextEditor.CreateRestorePoint(); if(document.all){ m_objInternalRestorePoint = m_objCurrentRichTextEditor.ContentWindow.document.selection.createRange() } else{ var objSelection = window.getSelection(); m_objInternalRestorePoint = objSelection.getRangeAt(0); } } } //------------------------------------------------------------ //- Rich editor table functions //------------------------------------------------------------ function RichEdit_ToggleCellColor(e) { var e = e || window.event; var srcElement = (e.target) ? e.target : e.srcElement var lngCellIndex = srcElement.cellIndex; var lngRowIndex = srcElement.parentNode.rowIndex; var objTable = srcElement.parentNode.parentNode; for (intIndex = 0; intIndex != objTable.rows.length; intIndex++) { for (intIndex2 = 0; intIndex2 != objTable.rows[intIndex].cells.length; intIndex2++) { if (intIndex2 <= lngCellIndex && intIndex <= lngRowIndex) { objTable.rows[intIndex].cells[intIndex2].bgColor = '#949FB5'; } else { objTable.rows[intIndex].cells[intIndex2].bgColor = 'white'; } } } } function RichEdit_InsertSelectedTable(e) { if(m_objCurrentRichTextEditor == null) return; //TextEditor_RestorePoint(); var e = e || window.event; var srcElement = (e.target) ? e.target : e.srcElement var intRows = srcElement.parentNode.rowIndex + 1; var intColumns = srcElement.cellIndex + 1; var newTable = document.createElement('TABLE'); m_blnChanged = true; //Add rows and cols for (y = 0; y < intRows; y++) { var newRow = newTable.insertRow(y); for (x = 0; x < intColumns; x++) { var newCell = newRow.insertCell(x); newCell.className = 'contenttext'; if(!document.all){ newCell.innerHTML = ' ' } newCell.style.width = parseInt(100/intColumns) + "%" } } //Set border and width newTable.border = '0'; newTable.cellPadding = '1'; newTable.cellSpacing = '1'; newTable.className = 'contenttext' newTable.width = '100%'; newTable.height = 25 * intRows; m_objCurrentRichTextEditor.PasteHtml(RichEdit_GetOuterHTML(newTable)) RichEdit_ResetTableSelector(); m_objRestorePoint = null; } function RichEdit_ToggleGrid(bolChange, srcImage){ if (m_blnHTMLMode && bolChange != false) return; if (bolChange) { m_blnShowGrid = !m_blnShowGrid; TextEditor_ExecuteCommand(null, 'ToggleTableBorder', m_objCurrentRichTextEditor); } if (bolChange != false){ if (srcImage != null) { if (m_blnShowGrid) { Toolbar_SelectItem('objToolbarShowTable', true); } else { Toolbar_SelectItem('objToolbarShowTable', false); } } } } function RichEdit_ResetTableSelector() { var divTable = document.getElementById('RichEdit_tblTableSelector'); if (divTable != null) { for (intIndex = 0; intIndex != divTable.rows.length; intIndex++) { for (intIndex2 = 0; intIndex2 != divTable.rows[intIndex].cells.length; intIndex2++) { divTable.rows[intIndex].cells[intIndex2].bgColor = 'white'; } } } } //------------------------------------------------------------ //- Rich editor color picker //------------------------------------------------------------ function RichEdit_ColorPicker(e) { if (m_blnHTMLMode) return; var e = e || window.event; //Get coordinates var xpos = e.clientX; var ypos = e.clientY; //Init color span-tag from js-file (Colorpicker.aspx) document.getElementById('toolbar_color').innerHTML = initColors('RichTextEditor'); if (xpos + 240 > document.body.offsetWidth) { xpos = document.body.offsetWidth - 250; } document.getElementById('toolbar_color').style.left = xpos; document.getElementById('toolbar_color').style.top = ypos; document.getElementById('toolbar_color').style.display = ''; setColor('#000000', 'RichTextEditor', true); } function RichEdit_CloseColorPicker(){ document.getElementById('toolbar_color').style.display = 'none'; } function RichEdit_ExecFontColor(strColor){ if (m_blnHTMLMode) return; if(m_objCurrentRichTextEditor == null) return; m_blnChanged = true; var oTool = new Object(); oTool.GetSelectedValue = function() { return strColor; } TextEditor_ExecuteCommand(null, 'ForeColor', m_objCurrentRichTextEditor, oTool) RichEdit_CloseColorPicker(); } function RichEdit_EnableToolbar(blnEnabled) { Toolbar_EnableItem('objToolbarBold', blnEnabled); Toolbar_EnableItem('objToolbarItalic', blnEnabled); Toolbar_EnableItem('objToolbarUnderline', blnEnabled); Toolbar_EnableItem('objToolbarStrike', blnEnabled); Toolbar_EnableItem('objToolbarSuper', blnEnabled); Toolbar_EnableItem('objToolbarSub', blnEnabled); Toolbar_EnableItem('objToolbarClear', blnEnabled); Toolbar_EnableItem('objToolbarFontFamily', blnEnabled); Toolbar_EnableItem('objToolbarFontSize', blnEnabled); Toolbar_EnableItem('objToolbarParagraph', blnEnabled); Toolbar_EnableItem('objToolbarStyle', blnEnabled); Toolbar_EnableItem('objToolbarColorpick', blnEnabled); Toolbar_EnableItem('objToolbarNumbList', blnEnabled); Toolbar_EnableItem('objToolbarBulletList', blnEnabled); Toolbar_EnableItem('objToolbarIndent', blnEnabled); Toolbar_EnableItem('objToolbarOutdent', blnEnabled); Toolbar_EnableItem('objToolbarJustifyLeft', blnEnabled); Toolbar_EnableItem('objToolbarJustifyCenter', blnEnabled); Toolbar_EnableItem('objToolbarJusifyFull', blnEnabled); Toolbar_EnableItem('objToolbarJustifyRight', blnEnabled); Toolbar_EnableItem('objToolbarInsertLinkFile', blnEnabled); Toolbar_EnableItem('objToolbarInsertLinkPage', blnEnabled); Toolbar_EnableItem('objToolbarExternalLink', blnEnabled); Toolbar_EnableItem('objToolbarDeleteLink', blnEnabled); Toolbar_EnableItem('objBookmarkList', blnEnabled); Toolbar_EnableItem('objToolbarAnchor', blnEnabled); Toolbar_EnableItem('objToolbarSymbol', blnEnabled); Toolbar_EnableItem('objToolbarTable', blnEnabled); Toolbar_EnableItem('objToolbarUndo', blnEnabled); Toolbar_EnableItem('objToolbarRedo', blnEnabled); Toolbar_EnableItem('objToolbarHtml', blnEnabled); Toolbar_EnableItem('objToolbarProperties', blnEnabled); Toolbar_EnableItem('objToolbarTranslate', blnEnabled, null, true); } function RichEdit_ToggleMode(objThis) { if(m_objCurrentRichTextEditor == null) return; if (m_blnHTMLMode) { RichEdit_EnableToolbar(true); m_objCurrentRichTextEditor.SetMode(1); Toolbar_SelectItem('objToolbarHtml', false); } else { RichEdit_EnableToolbar(false); Toolbar_EnableItem('objToolbarHtml', true); m_objCurrentRichTextEditor.SetMode(2); if (objThis!=null) { Toolbar_SelectItem('objToolbarHtml', true); } } m_blnHTMLMode =! m_blnHTMLMode; if(!m_blnHTMLMode) { //---------------------------------------------------- //Fixes bug in when switching between html/design mode //---------------------------------------------------- RichEdit_ToggleGrid(true); RichEdit_ToggleGrid(true); //---------------------------------------------------- } } function RichEdit_InsertParagraph(strParagraph){ if (m_blnHTMLMode) return; if (m_objCurrentRichTextEditor == null) return; m_blnChanged = true; if (strParagraph == null || strParagraph == '') { strParagraph = '
'
} else{
strParagraph = '<' + strParagraph + '>';
}
var oTool = new Object();
oTool.GetSelectedValue = function() { return strParagraph }
TextEditor_ExecuteCommand(null, 'FormatBlock', m_objCurrentRichTextEditor, oTool)
}
function RichEdit_SetFontFamily(strFont) {
if (m_blnHTMLMode) return;
if (m_objCurrentRichTextEditor == null) return;
m_blnChanged = true;
var oTool = new Object();
oTool.GetSelectedValue = function() { return strFont; }
TextEditor_ExecuteCommand(null, 'FontName', m_objCurrentRichTextEditor, oTool)
}
function RichEdit_SetFontSize(strFontSize) {
if (m_blnHTMLMode) return;
if (m_objCurrentRichTextEditor == null) return;
m_blnChanged = true;
var oTool = new Object();
oTool.GetSelectedValue = function() { return strFontSize; }
TextEditor_ExecuteCommand(null, 'FontSize', m_objCurrentRichTextEditor, oTool)
}
function RichEdit_InsertSymbol(strSymbol) {
if(m_objCurrentRichTextEditor == null) return;
m_objRestorePoint = null;
m_blnChanged = true;
var oTool = new Object();
oTool.GetSelectedValue = function() { return strSymbol; }
TextEditor_ExecuteCommand(null, 'InsertSymbol', m_objCurrentRichTextEditor, oTool)
//TextEditor_CreateRestorePoint()
}
function RichEdit_ApplyCSS(strCSS) {
if (m_blnHTMLMode) return;
if(m_objCurrentRichTextEditor == null) return;
m_blnChanged = true;
if (strCSS == '') {
TextEditor_ExecuteCommand(null, 'StripAll', m_objCurrentRichTextEditor)
}
else {
var oTool = new Object();
oTool.GetSelectedValue = function() { return strCSS; }
TextEditor_ExecuteCommand(null, 'ApplyClass', m_objCurrentRichTextEditor, oTool)
}
}
function RichEdit_SpellCheck(strLanguageID, e) {
var e = e || window.event;
var objTool = {GetSelectedValue : function() { return strLanguageID; } }
//if (e.ctrlKey) {
TextEditor_ExecuteCommand(null, 'SpellCheck', m_objCurrentRichTextEditor, objTool);
//}
//else {
// TextEditor_ExecuteCommand(null, 'AjaxSpellCheck', m_objCurrentRichTextEditor, objTool);
//}
}
function RichEdit_RenderBookmarkList(objDocument) {
//Clear list
var objEditor = m_objCurrentRichTextEditor;
if (document.getElementById('objBookmarkList') != null) {
Toolbar_ClearAllOptions('objBookmarkList');
if (objDocument == null) {
objDocument = objEditor.ContentWindow;
}
var colAnchors = objDocument.getElementsByTagName('A');
for (var intIndex=0; intIndex < colAnchors.length; intIndex++) {
if (colAnchors[intIndex].className == 'mceItemAnchor') {
var strName = colAnchors[intIndex].getAttribute('name');
Toolbar_AddOption('objBookmarkList', strName, strName, function (e) { var e = e || window.event; var srcElement = (e.target) ? e.target : e.srcElement;RichEdit_InsertAnchor(srcElement.getAttribute('value')); });
}
}
}
}
function RichEdit_InsertBookmark() {
if (m_blnHTMLMode) return;
if(m_objCurrentRichTextEditor == null) return;
m_blnChanged = true;
var strName = 'myBookmark';
strHTML = '';
m_objCurrentRichTextEditor.SetHtml(strHTML)
RichEdit_RenderBookmarkList()
}
function RichEdit_InsertAnchor(strValue) {
if (m_blnHTMLMode) return;
m_blnChanged = true;
RichEdit_InsertLink("#" + strValue, "", "", "")
}
function RichEdit_InsertExternalLink(){
if (m_blnHTMLMode) return;
if(m_objCurrentRichTextEditor == null) return;
m_blnChanged = true;
TextEditor_ExecuteCommand(null, 'LinkManager', m_objCurrentRichTextEditor, null)
}
function RichEdit_LoadProperties(blnShow) {
try {
LoadProperties(blnShow);
} catch (objErr) {}
}
function RichEdit_LoadMedia() {
try {
LoadMedia();
} catch (objErr) {}
}
function RichEdit_LoadPages() {
try {
LoadLinkPages();
} catch (objErr) {}
}
function RichEdit_InsertImage(strUrl, strFileName){
if(m_objCurrentRichTextEditor == null) return;
m_blnChanged = true;
var lngLength = String(strFileName).lastIndexOf(".")
var strName = String(strFileName).substr(0, lngLength);
TextEditor_RestoreInternalPoint()
m_objCurrentRichTextEditor.PasteHtml('');
TextEditor_CreateRestorePoint()
}
function RichEdit_InsertLink(strUrl, strName, blnNewWindow, strLinkType) {
if(m_objCurrentRichTextEditor == null) return;
m_blnChanged = true;
TextEditor_RestoreInternalPoint()
var strTarget = '';
if (blnNewWindow) {
strTarget = '_blank';
}
var strSelectedText = m_objCurrentRichTextEditor.GetSelectionHtml();
if (strSelectedText == '' || strSelectedText.toLowerCase().indexOf('
') != -1) { strSelectedText = strName; m_objCurrentRichTextEditor.PasteHtml('' + strSelectedText + ''); } else{ m_objCurrentRichTextEditor.Document.execCommand("CreateLink", false, strUrl); } TextEditor_CreateRestorePoint() } function RichEdit_SetAnchor(srcElement, strUrl, strText, blnNewWindow, strLinkType) { with (srcElement) { setAttribute('href', strUrl); if (blnNewWindow) { setAttribute('target', '_blank'); } if (strLinkType != '' && strLinkType != null) { setAttribute('linktype', strLinkType); } if (strText != '') { innerHTML = strText; } } } function RichEdit_InsertFlash(strUrl) { if (m_blnHTMLMode) return; if (m_objCurrentRichTextEditor == null) return; m_blnChanged = true; TextEditor_RestorePoint() RichEdit_CreateFlashObject('150', '150', strUrl); TextEditor_CreateRestorePoint() } function RichEdit_CreateFlashObject(strWidth, strHeight, strUrl) { var strHTML = '' + '' m_objCurrentRichTextEditor.PasteHtml(strHTML); } function TextEditor_ShowProperties(e){ if (m_objCurrentRichTextEditor == null) return; var e = e || window.event; var srcElement = (e.target) ? e.target : e.srcElement var oTool = new Object(); oTool.GetSelectedValue = function() { return srcElement } switch(srcElement.tagName){ case "IMG": TextEditor_ExecuteCommand('', 'SetImageProperties', m_objCurrentRichTextEditor, oTool) break; case "A": TextEditor_ExecuteCommand(null, 'LinkManager', m_objCurrentRichTextEditor, oTool) break; } } function RichEdit_HideAll() { if (typeof(arrToolbarOptionList) != 'undefined') { Toolbar_HideAll(); } RichEdit_ResetTableSelector(); } function RichEdit_Submit() { if (m_blnHTMLMode) { RichEdit_ToggleMode(); } } function RichEdit_GetOuterHTML(srcElement) { if (document.all) { return srcElement.outerHTML; } else { var objTempElement = srcElement.cloneNode(true); var objDiv = srcElement.ownerDocument.createElement('DIV'); objDiv.appendChild(objTempElement); return objDiv.innerHTML; } } //------------------------------------------------------------ //- Used to spellcheck current selected editor. //------------------------------------------------------------ function RichEdit_VariableSpellSource() { this.getText = function() { return m_objCurrentRichTextEditor.GetHtml(true); } this.setText = function(newValue) { m_objCurrentRichTextEditor.SetHtml(newValue); } }