//------------------------------------------------------------ //- 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('' + strName + ''); 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); } }