if (typeof(editorMode) == "undefined"){
	try { console.log("[editorMode]未定义"); }catch(e){}
	editorMode = 'kindeditor4';	// 后台使用的编辑器模式
}
try { console.log("editorMode："+ editorMode); }catch(e){}

// 插入编辑器控件
if (editorMode=="tinymce"){
	document.write(""+
	"<script language='javascript' type='text/javascript' src='tools/tinymce/tinymce.min.js' referrerpolicy='origin'></script>"+
	"<style>.tinymce-ad { display: none !important; }</style>"+
	"");
}else if (editorMode=="tinymce5"){
	document.write(""+
	"<script language='javascript' type='text/javascript' src='tools/tinymce5/tinymce.min.js' referrerpolicy='origin'></script>"+
	"<style>.tinymce-ad { display: none !important; }</style>"+
	"");
}else if (editorMode=="ckeditor4"){
	document.write(""+
	"<script language='javascript' type='text/javascript' src='tools/ckeditor4/ckeditor.js'></script>"+
	"<style>.cke_notifications_area { display: none; }</style>"+
	"");
}else if (editorMode=="ckeditor3"){
	document.write("<script language='javascript' type='text/javascript' src='tools/ckeditor3/ckeditor.js'></script>");
}else if (editorMode=="fckeditor"){
	document.write("<script language='javascript' type='text/javascript' src='tools/fckeditor/fckeditor.js'></script>");
}else if (editorMode=="kindeditor3"){
	document.write("<script language='javascript' type='text/javascript' src='tools/kindeditor3/kindeditor-min.js'></script>");
}else if (editorMode=="ueditor"){
	var ue;
	document.write(""+
	"<script language='javascript' type='text/javascript' src='tools/ueditor/ueditor.config.js' charset='gbk'></script>"+
	"<script language='javascript' type='text/javascript' src='tools/ueditor/ueditor.all.min.js' charset='gbk'></script>"+
	"<script language='javascript' type='text/javascript' src='tools/ueditor/lang/zh-cn/zh-cn.js' charset='gbk'></script>"+
	"");
}else{
	editorMode = "kindeditor4";
	var ke4Editor = [];
	document.write("<script language='javascript' type='text/javascript' src='tools/kindeditor4/kindeditor-all-min.js'></script>");
}
var editorStartMode="";



// 加载编辑器
function LoadEditor(inputId,editorW,editorH,modeStr) {
	if (editorW == 0){ editorW = 800; }
	if (editorH == 0){ editorH = 600; }
	switch (editorMode){
		case 'tinymce':
			if (modeStr.indexOf('|miniMenu|') != -1){
				minHeight = 200;
				toolbarList = ['code forecolor backcolor bold italic underline strikethrough link | styles fontfamily fontsize | image media'];
			}else{
				minHeight = 350;
				toolbarList = ['code undo redo restoredraft | cut copy paste pastetext | forecolor backcolor bold italic underline strikethrough link | alignleft aligncenter alignright alignjustify outdent indent | styles blocks fontfamily fontsize | bullist numlist | blockquote subscript superscript removeformat | table image media charmap emoticons insertdatetime accordion | hr pagebreak lineheight nonbreaking searchreplace | bdmap indent2em formatpainter kityformula-editor advlist directionality importcss visualchars lists visualblocks autosave quickbars fullscreen wordcount help'];
			}
			tinymce.init({
				selector: '#'+ inputId,		// 选择器，指定哪个元素使用 TinyMCE
				language: 'zh_CN',			// 语言设置
				width: '100%',				// 编辑器宽度
				height: editorH,			// 编辑器高度
				min_height: minHeight,		// 编辑器最低高度
				menubar: true,				// 是否显示菜单栏
				statusbar: true,			// 是否显示状态栏
				branding: false,			// 去除底部的 TinyMCE 广告
				relative_urls: false,		// 3项，避免图片地址和链接地址转换成相对路径
				remove_script_host: false,
				convert_urls: false,
				setup: function(editor) {
					editor.on('keydown', function (event) {
						if (event.keyCode === 13) {
							// 回车键 和 回车键+shift 对调
							if (event.shiftKey){
								event.shiftKey = false;
							}else{
								event.shiftKey = true;
							}
						}
					});
				},
				// toolbar_sticky: true,		// 使工具栏粘性
				// toolbar_sticky_offset: 365,	// 工具栏距离顶部的偏移量
				skin: 'tinymce-5',		// 皮肤
				plugins: [
					'advlist', 'accordion', 'directionality', 'importcss', 'nonbreaking', 'save', 'visualchars', 'lists', 'link', 'image', 'charmap', 'preview', 'searchreplace', 'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'help', 'wordcount', 'emoticons', 'autosave', 'quickbars', 'codesample'
					],					// 启用的插件列表 ,'autoresize', 'autolink', 'anchor'
				toolbar: toolbarList,					// 工具栏按钮列表 preview save codesample
				toolbar_sticky: true,	// 工具栏固定在顶部
				/* 
				content_css: 'tools/kindeditor.css',	// 自定义内容样式文件路径
				content_style: 'body { margin:0 15px;font-size:16px; } a { font-size:16px; }',	// 自定义编辑器内容的样式
				*/

				font_size_formats: '12px 14px 16px 18px 24px 36px 48px 56px 72px',
				font_family_formats: '微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;苹果苹方=PingFang SC,Microsoft YaHei,sans-serif;宋体=simsun,serif;仿宋体=FangSong,serif;黑体=SimHei,sans-serif;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;',
				importcss_append: true,				// 将导入的样式附加到格式菜单末尾并替换默认格式
				autosave_ask_before_unload: false,	// 当关闭或跳转URL时，弹出提示框提醒用户仍未保存变更内容。默认开启提示。
				toolbar_mode: 'wrap',				// 工具栏的显示模式：浮动模式（floating）、‌滑动模式（sliding）、‌滚动模式（scrolling）、‌换行模式（wrap）
				entity_encoding: "named",			// 处理实体/字符的转换方式：named（如空格转换成&nbsp;）、numeric（如空格将编码为&#160;）、raw（除了XML默认实体<,>,&,"）
				remove_trailing_brs: false,			// 删除最尾的br
				valid_elements: '',					// 防止TinyMCE自动清理HTML
				image_uploadtab: false,				// 禁用上传图片功能
				automatic_uploads: false,			// 禁用自动上传，可选
				images_upload_url: '',				// 设置一个无效的上传 URL 或者不设置任何上传处理器
			});
			/*
			【高级插件】
			a11ychecker 无障碍检查器，检查编辑器内容是否存在 WCAG 和 508 条款的无障碍问题。
			advanced-typography 高级排版，将常见的打字机风格字符替换为专业排版机的等价字符。
			ai AI助手，将查询发送到注册的AI API，并将结果设置在当前文档中。
			casechange 大小写转换，更改文本的大小写。
			checklist 清单，将检查表添加到您的内容中。
			introduction-to-tiny-comments 评论，TinyMCE 评论插件。
			advcode 增强代码编辑器，如何设置 TinyMCE 的增强代码编辑器插件。
			introduction-to-mediaembed 增强媒体嵌入，在 TinyMCE 内部添加富媒体预览。
			advtable 增强表格，为表格添加增强功能。
			exportword 导出为Word，将导出编辑内容为.docx文件格式并保存到本地磁盘。
			exportpdf 导出为PDF，从 TinyMCE 导出并生成 document.pdf 格式的内容。
			footnotes 脚注，插入文本脚注并添加脚注条目。
			formatpainter 格式刷，将格式应用于多个文本片段。
			inline-css 内联CSS，将 TinyMCE 文档转换为单个文件，内联 CSS，特别适用于作为 HTML 格式电子邮件发送。
			importword 从 Word 导入，导入 .docx（Word文档）或 .dotx（Word模板）文件到编辑器。
			editimage 图像编辑，TinyMCE的图像编辑功能。
			uploadcare 图像优化器 由 Uploadcare 提供技术支持，TinyMCE的图像优化功能。
			linkchecker 链接检查器，在输入链接时进行验证。
			math 数学，启用使用 Latex 或 MathML 标记插入数学公式的功能。
			markdown 标记语言，启用粘贴时纯Markdown的转换。
			mentions 提及，启用@提及功能。
			mergetags 合并标签，启用向内容添加合并标签。
			moxiemanager 莫克西经理，文件和图像管理插件和服务
			pageembed 页面嵌入，将 iframe 插入到内容中。
			permanentpen 永久笔，在输入时应用格式。
			introduction-to-powerpaste 强力粘贴，从Microsoft Word、Microsoft Excel、Google Docs和HTML复制和粘贴内容。
			revisionhistory 修订历史，轻松查看文档更改并恢复以前的版本。
			introduction-to-tiny-spellchecker 拼写检查器，在 TinyMCE 中实时检查拼写。
			autocorrect 拼写自动更正，为TinyMCE添加常见拼写错误和自动更正功能，以及大小写检查。
			advanced-templates 模板，在 TinyMCE 中创建和编辑复杂的模板。
			tableofcontents 目录，在 TinyMCE 编辑器中插入一个简单的目录。
			tinydrive-introduction 小驱动器，基于云的文件和图像管理用于TinyMCE。

			【开源插件】
			accordion 风琴，创建可展开和可折叠的部分。
			anchor 锚，插入书签（有时也称为书签）。
			autolink 自动链接，自动生成超链接。
			autoresize 自动调整大小，自动调整 TinyMCE 的大小以适应内容。
			autosave 自动保存，自动将内容保存在您的本地浏览器中。
			charmap 字符映射表，在 TinyMCE 中插入特殊字符。
			code 代码，编辑您的内容的HTML源代码。
			codesample 代码示例，插入并嵌入语法高亮的代码片段。
			directionality 方向性，用于设置从左到右或从右到左内容方向的工具栏按钮。
			emoticons 表情符号，为您的内容带来一个笑脸。
			fullscreen 全屏，展开TinyMCE以填充整个屏幕。
			help 帮助，显示帮助对话框。
			image 图像，将图片插入到TinyMCE中。
			importcss 导入CSS，自动将CSS类名填充到格式下拉菜单中。
			insertdatetime 插入日期/时间，将当前日期和/或时间插入到TinyMCE中。
			link 链接，添加超链接到内容。
			lists 列表，规范浏览器之间的列表行为。
			advlist 列表样式，创建带样式的编号和带项目符号的列表。
			media 媒体，添加 HTML5 视频和音频元素。
			nonbreaking 不间断空格，插入一个不间断空格。
			pagebreak 分页符，添加分页符。
			preview 预览，显示当前内容的只读对话框。
			quickbars 快速工具栏，用户界面控件，用于更快地创建内容。
			save 保存，在 TinyMCE 工具栏中添加一个保存按钮。
			searchreplace 搜索和替换，在 TinyMCE 中查找和替换内容。
			table 表格，表格编辑功能。
			visualblocks 视觉块，允许用户看到段落等块级元素。
			visualchars 视觉字符，查看不可见字符，例如不换行空格。
			wordcount 字数统计，在 TinyMCE 状态栏中显示字数统计。

			【插件（Plugins）】解析
			在TinyMCE中，插件是扩展编辑器功能的关键。每个插件提供一组特定的功能。以下是你列出的插件及其功能说明：
			advlist: 提供高级列表功能，包括自定义列表样式。
			autolink: 自动将文本中的URL转换为链接。
			lists: 提供无序列表和有序列表的基本功能。
			link: 允许插入和编辑超链接。
			image: 提供插入和编辑图片的功能。
			charmap: 提供字符映射表，可以插入特殊字符。
			preview: 提供预览功能，可以在编辑器中查看内容的最终显示效果。
			anchor: 允许插入和编辑锚点（书签），用于页面内的跳转。
			searchreplace: 提供查找和替换功能。
			visualblocks: 显示块级元素的边界，便于编辑和排版。
			code: 提供代码视图模式，可以直接编辑HTML源代码。
			fullscreen: 提供全屏模式，使编辑器占据整个浏览器窗口。
			insertdatetime: 允许插入当前日期和时间。
			media: 提供插入和编辑多媒体内容（如视频、音频）的功能。
			table: 提供插入和编辑表格的功能。
			paste: 提供粘贴功能，并处理从其他来源粘贴的内容格式。
			help: 提供帮助文档链接。
			wordcount: 显示当前文档的字数统计。

			【工具栏（Toolbar）】解析
			工具栏提供了编辑器的主要操作按钮。以下是你列出的工具栏按钮及其功能说明：
			code: 切换到代码视图模式，直接编辑HTML源代码。
			formatselect: 格式选择下拉菜单，可以选择段落格式（如标题、正文等）。
			fontselect: 字体选择下拉菜单，可以选择不同的字体。
			fontsizeselect: 字号选择下拉菜单，可以选择不同的字号。
			forecolor: 设置文本颜色。
			backcolor: 设置背景颜色。
			bold: 加粗文本。
			italic: 斜体文本。
			underline: 下划线文本。
			strikethrough: 删除线文本。
			link: 插入和编辑超链接。
			alignment: 文本对齐方式（左对齐、居中对齐、右对齐、两端对齐）。
			outdent: 减少缩进。
			indent: 增加缩进。
			bullist: 无序列表。
			numlist: 有序列表。
			blockquote: 插入引用块。
			subscript: 下标文本。
			superscript: 上标文本。
			removeformat: 清除所选文本的所有格式。
			table: 插入和编辑表格。
			image: 插入和编辑图片。
			media: 插入和编辑多媒体内容（如视频、音频）。
			importword: 导入Word文档。
			charmap: 插入特殊字符。
			pagebreak: 插入分页符。
			formatpainter: 格式刷，复制格式。
			cut: 剪切文本。
			copy: 复制文本。
			undo: 撤销最近的操作。
			redo: 重做最近的操作。
			restoredraft: 恢复草稿。
			searchreplace: 查找和替换文本。
			fullscreen: 切换全屏模式。
			*/
			break;

		case 'tinymce5':
			if (modeStr.indexOf('|miniMenu|') != -1){
				minHeight = 200;
				toolbarList = ['code forecolor backcolor bold italic underline strikethrough link | styleselect fontselect fontsizeselect | image media'];
			}else{
				minHeight = 350;
				toolbarList = ['code undo redo restoredraft | cut copy paste pastetext | forecolor backcolor bold italic underline strikethrough link | alignleft aligncenter alignright alignjustify outdent indent | styleselect formatselect fontselect fontsizeselect | bullist numlist | blockquote subscript superscript removeformat | table image media charmap emoticons insertdatetime | hr pagebreak bdmap indent2em lineheight formatpainter importword kityformula-editor nonbreaking searchreplace | visualblocks visualchars fullscreen wordcount help'];
			}
			tinymce.init({
				selector: '#'+ inputId,		// 选择器，指定哪个元素使用 TinyMCE
				language: 'zh_CN',			// 语言设置
				width: '100%',				// 编辑器宽度
				height: editorH,			// 编辑器高度
				min_height: minHeight,		// 编辑器最低高度
				menubar: true,				// 是否显示菜单栏
				statusbar: true,			// 是否显示状态栏
				branding: false,			// 去除底部的 TinyMCE 广告
				relative_urls: false,		// 3项，避免图片地址和链接地址转换成相对路径
				remove_script_host: false,
				convert_urls: false,
				setup: function(editor) {
					editor.on('keydown', function (event) {
						if (event.keyCode === 13) {
							// 回车键 和 回车键+shift 对调
							if (event.shiftKey){
								event.shiftKey = false;
							}else{
								event.shiftKey = true;
							}
						}
					});
				},
				// toolbar_sticky: true,		// 使工具栏粘性
				// toolbar_sticky_offset: 65,	// 工具栏距离顶部的偏移量
				plugins: [
					'advlist', 'autosave', 'charmap', 'code', 'codesample', 'colorpicker', 'contextmenu', 'directionality', 'emoticons', 'fullscreen', 'help', 'hr', 'image', 'imagetools', 'importcss', 'insertdatetime', 'legacyoutput', 'link', 'lists', 'media', 'nonbreaking', 'noneditable', 'pagebreak', 'paste', 'preview', 'print', 'quickbars', 'save', 'searchreplace', 'spellchecker', 'tabfocus', 'table', 'template', 'textcolor', 'textpattern', 'toc', 'visualblocks', 'visualchars', 'wordcount'
					],					// 启用的插件列表, 'autoresize', 'autolink', 'anchor', 'bbcode', 'fullpage'
					/*
					【开源插件】
					advlist 高级列表，创建带样式的编号和带项目符号的列表。
					anchor 锚，插入书签（有时也称为书签）。
					autolink 自动链接，自动生成超链接。
					autoresize 自动调整大小，自动调整 TinyMCE 的大小以适应内容。
					autosave 自动保存，自动将内容保存在您的本地浏览器中。
					bbcode BB代码，为TinyMCE添加基本的BBCode输入/输出。
					charmap 字符映射表，在 TinyMCE 中插入特殊字符。
					code 代码，编辑您的内容的HTML源代码。
					codesample 代码示例，插入并嵌入语法高亮的代码片段。
					directionality 方向性，用于设置从左到右或从右到左内容方向的工具栏按钮。
					emoticons 表情符号，为您的内容带来微笑。
					fullpage 全页，编辑所有元数据和文档属性，如标题、关键词和描述。
					fullscreen 全屏，将TinyMCE放大到整个屏幕。
					help 帮助，显示帮助对话框。
					hr 水平线，插入一条水平线。
					image 图像，将图片插入到TinyMCE中。
					editimage 图像工具，TinyMCE的图像编辑功能。
					importcss 导入CSS，自动将CSS类名填充到格式下拉菜单中。
					insertdatetime 插入日期/时间，将当前日期和/或时间插入到TinyMCE中。
					legacyoutput 遗留输出，将 HTML 输出更改为旧的 HTML 语法，例如 font、b 和 i
					link 链接，添加超链接到内容。
					lists 列表，在不同浏览器之间规范列表行为。
					media 媒体，添加 HTML5 视频和音频元素。
					nonbreaking 不间断空格，插入一个不间断空格。
					noneditable 不可编辑，防止用户更改元素内的内容。适用于模板。
					pagebreak 分页符，添加分页。
					paste 粘贴，标准版功能用于从 Microsoft Word 复制和粘贴内容。
					preview 预览，显示当前内容的只读弹出窗口。
					print 打印，在TinyMCE中打印内容。
					quickbars 快速工具栏，用户界面控件，用于更快地创建内容。
					save 保存，在 TinyMCE 工具栏中添加一个保存按钮。
					searchreplace 搜索和替换，在 TinyMCE 中查找和替换内容。
					spellchecker 拼写检查器，启用 TinyMCE 的拼写检查功能。
					tabfocus 标签聚焦，在你的网页表单中切换到和切换出TinyMCE控件。
					table 表格，表格编辑功能。
					template 模板，为您的内容定制模板。
					textpattern 文本模式，在文本中匹配特殊模式，并对这些模式应用格式或执行命令。
					tableofcontents 目录，在TinyMCE编辑器中插入一个简单的目录
					visualblocks 视觉块，允许用户看到段落等块级元素。
					visualchars 视觉字符，查看不可见字符，如不换行空格。
					wordcount 字数统计，在TinyMCE状态栏中显示字数统计。
					【高级插件/收费】
					a11ychecker 无障碍检查器，检查编辑器中的内容是否存在 WCAG 和 508 条款的无障碍问题。
					advcode 高级代码编辑器，如何设置 TinyMCE 的高级代码编辑器插件。
					advtable 高级表格，为表格添加高级功能。
					casechange 大小写转换，更改文本的大小写。
					checklist 清单，将检查表添加到您的内容中。
					introduction_to_tiny_comments 评论，TinyMCE 评论插件
					introduction-to-mediaembed 增强媒体嵌入，在 TinyMCE 内部添加富媒体预览。
					export 导出，将内容从 TinyMCE 导出到各种格式。
					formatpainter 格式刷，快速为多段文本应用格式。
					linkchecker 链接检查器，在您输入时验证链接。
					mentions 提及，启用 @提及 功能。
					moxiemanager 魔力经理，文件和图像管理插件和服务
					pageembed 页面嵌入，轻松将 iframe 插入到内容中。
					permanentpen 永久笔，在输入时应用格式。
					introduction-to-powerpaste 强力粘贴
					introduction-to-tiny-spellchecker 拼写检查专家，在 TinyMCE 中边输入边检查拼写。
					tinydrive-plugin 小驱动器，基于云的文件和图像管理用于TinyMCE。
					rtc-plugin 实时协作，TinyMCE 的实时协作插件
					*/
				toolbar: toolbarList,	// 工具栏按钮列表
				toolbar_sticky: true,	// 工具栏固定在顶部

				fontsize_formats: '12px 14px 16px 18px 24px 36px 48px 56px 72px',
				font_formats: '微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;苹果苹方=PingFang SC,Microsoft YaHei,sans-serif;宋体=simsun,serif;仿宋体=FangSong,serif;黑体=SimHei,sans-serif;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;',
				importcss_append: true,				// 将导入的样式附加到格式菜单末尾并替换默认格式
				autosave_ask_before_unload: false,	// 当关闭或跳转URL时，弹出提示框提醒用户仍未保存变更内容。默认开启提示。
				toolbar_mode: 'wrap',				// 工具栏的显示模式：浮动模式（floating）、‌滑动模式（sliding）、‌滚动模式（scrolling）、‌换行模式（wrap）
				entity_encoding: "named",			// 处理实体/字符的转换方式：named（如空格转换成&nbsp;）、numeric（如空格将编码为&#160;）、raw（除了XML默认实体<,>,&,"）
				remove_trailing_brs: false,			// 删除最尾的br
				valid_elements: '',					// 防止TinyMCE自动清理HTML
				image_uploadtab: false,				// 禁用上传图片功能
				automatic_uploads: false,			// 禁用自动上传，可选
				images_upload_url: '',				// 设置一个无效的上传 URL 或者不设置任何上传处理器
			});
			break;

		case 'kindeditor3':
			if (modeStr.indexOf('|source|') != -1){ wyswygModeVal=false; }else{ wyswygModeVal=true; }
			if (modeStr.indexOf('|miniMenu|') != -1){
				itemsVal=[
					'source', '|','cut', 'copy', 'paste', '|', 'justifyleft', 'justifycenter', 'justifyright',
					'fontname', 'fontsize', '|', 'textcolor', 'bgcolor', 'bold',
					'italic', 'underline', 'strikethrough', 'removeformat', '|', 'link', 'unlink', 'image'
				];
			}else{
				itemsVal=[
					'source', '|', 'fullscreen', 'undo', 'redo', 'selectall', '|', 'cut', 'copy', 'paste',
					'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright',
					'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
					'superscript', '-',
					'title', 'fontname', 'fontsize', '|', 'textcolor', 'bgcolor', 'bold',
					'italic', 'underline', 'strikethrough', 'removeformat', '|', 'image',
					'flash', 'media', 'advtable', 'hr', 'link', 'unlink', '|', 'about'
				];
			}
			KE.init({
				id : inputId,
				allowUpload : false,
				minWidth : editorW,
				minHeight : editorH,
				newlineTag : 'p',
				items : itemsVal,
		//		resizeMode : 1,	// 2 或1 或0，2 时可以拖动改变宽度和高度，1 时只能改变高度，0 时不能拖动。默认值：2
				wyswygMode : wyswygModeVal,
				cssPath : ['tools/kindeditor.css'],
				afterCreate : function(id) {
					KE.util.focus(id);
				}
			});
		//	KE.create(inputId);
			setTimeout("KE.create('"+ inputId +"');",600);
			break;

		case 'kindeditor4':
			if (modeStr.indexOf('|source|') != -1){ designModeVal=false; }else{ designModeVal=true; }
			if (modeStr.indexOf('|miniMenu|') != -1){
				itemsVal=[
					'source', '|','cut', 'copy', 'paste', '|', 'justifyleft', 'justifycenter', 'justifyright',
					'fontname', 'fontsize', 'forecolor', '|', 'bold',
					'italic', 'underline', 'strikethrough', 'removeformat', '|', 'link', 'unlink', 'image'
				];
			}else{
				itemsVal=[
					'source', '|', 'undo', 'redo', '|', 'code', 'selectall','cut', 'copy', 'paste',
					'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright',
					'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
					'superscript', 'clearhtml', 'quickformat', '|', 'fullscreen', '/',
					'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',
					'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|', 'image',
					'flash', 'media', 'insertfile', 'table', 'hr', 'anchor', 'link', 'unlink'
				];
			}
			ke4Editor[inputId] = KindEditor.create("#"+ inputId,{
				allowImageUpload : false,
				allowFlashUpload : false,
				allowMediaUpload : false,
				allowFileUpload : false,
				allowFileManager : false,
				minWidth : editorW,
				minHeight : editorH,
				newlineTag : 'p',
				items : itemsVal,
				designMode : designModeVal,
/*
				colorTable : [	
					["#000000","#003300","#006600","#009900","#00cc00","#00ff00","#330000","#333300","#336600","#339900","#33cc00","#33ff00","#660000","#663300","#666600","#669900","#66cc00","#66ff00","#000000"],
					["#000033","#003333","#006633","#009933","#00cc33","#00ff33","#330033","#333333","#336633","#339933","#33cc33","#33ff33","#660033","#663333","#666633","#669933","#66cc33","#66ff33","#333333"],
					["#000066","#003366","#006666","#009966","#00cc66","#00ff66","#330066","#333366","#336666","#339966","#33cc66","#33ff66","#660066","#663366","#666666","#669966","#66cc66","#66ff66","#666666"],
					["#000099","#003399","#006699","#009999","#00cc99","#00ff99","#330099","#333399","#336699","#339999","#33cc99","#33ff99","#660099","#663399","#666699","#669999","#66cc99","#66ff99","#999999"],
					["#0000cc","#0033cc","#0066cc","#0099cc","#00cccc","#00ffcc","#3300cc","#3333cc","#3366cc","#3399cc","#33cccc","#33ffcc","#6600cc","#6633cc","#6666cc","#6699cc","#66cccc","#66ffcc","#cccccc"],
					["#0000ff","#0033ff","#0066ff","#0099ff","#00ccff","#00ffff","#3300ff","#3333ff","#3366ff","#3399ff","#33ccff","#33ffff","#6600ff","#6633ff","#6666ff","#6699ff","#66ccff","#66ffff","#ffffff"],
					["#990000","#993300","#996600","#999900","#99cc00","#99ff00","#cc0000","#cc3300","#cc6600","#cc9900","#cccc00","#ccff00","#ff0000","#ff3300","#ff6600","#ff9900","#ffcc00","#ffff00"],
					["#990033","#993333","#996633","#999933","#99cc33","#99ff33","#cc0033","#cc3333","#cc6633","#cc9933","#cccc33","#ccff33","#ff0033","#ff3333","#ff6633","#ff9933","#ffcc33","#ffff33"],
					["#990066","#993366","#996666","#999966","#99cc66","#99ff66","#cc0066","#cc3366","#cc6666","#cc9966","#cccc66","#ccff66","#ff0066","#ff3366","#ff6666","#ff9966","#ffcc66","#ffff66"],
					["#990099","#993399","#996699","#999999","#99cc99","#99ff99","#cc0099","#cc3399","#cc6699","#cc9999","#cccc99","#ccff99","#ff0099","#ff3399","#ff6699","#ff9999","#ffcc99","#ffff99"],
					["#9900cc","#9933cc","#9966cc","#9999cc","#99cccc","#99ffcc","#cc00cc","#cc33cc","#cc66cc","#cc99cc","#cccccc","#ccffcc","#ff00cc","#ff33cc","#ff66cc","#ff99cc","#ffcccc","#ffffcc"],
					["#9900ff","#9933ff","#9966ff","#9999ff","#99ccff","#99ffff","#cc00ff","#cc33ff","#cc66ff","#cc99ff","#ccccff","#ccffff","#ff00ff","#ff33ff","#ff66ff","#ff99ff","#ffccff","#ffffff"]
				],
*/
				cssPath : ['tools/kindeditor.css']
			});
			break;

		case 'ckeditor3': case 'ckeditor4':
				if (modeStr.indexOf('|source|') != -1){ editorStartMode="source"; }else{ editorStartMode="wysiwyg"; }
				if (modeStr.indexOf('|miniMenu|') != -1){ toolbarStr="Basic"; }else{ toolbarStr="SY"; }
				var editor = CKEDITOR.replace(inputId,
				{
					width : editorW,
					height : editorH,
//					removePlugins : 'elementspath', //去掉底部一行的元素路径显示
//					resize_enabled : true, //拖拽功能开关
					startupMode : editorStartMode,
					toolbar : toolbarStr
				});
			break;

		case 'fckeditor':
				if (modeStr.indexOf('|source|') != -1){ editorStartMode="source"; }else{ editorStartMode=""; }
				if (modeStr.indexOf('|miniMenu|') != -1){ toolbarStr="Basic"; }else{ toolbarStr="SY"; }
				var editor=new FCKeditor(inputId);
				editor.BasePath='tools/fckeditor/';	//fck根目录
				editor.Width = editorW;
				editor.Height = editorH;
				editor.EditMode = -1;
				editor.ToolbarSet = toolbarStr;
				editor.ReplaceTextarea() ; 
			break;

		case 'ueditor':
				if (modeStr.indexOf('|source|') != -1){ editorFirstMode=true; }else{ editorFirstMode=false; }
				if (modeStr.indexOf('|miniMenu|') != -1){
					toolbarsMenu = [
							['source', '|','forecolor', 'backcolor', 'bold', 'italic', 'underline', 'strikethrough', '|','fontfamily', 'fontsize', '|','link', 'unlink', '|', 'insertimage','spechars']
						];
					minFrameH = editorH-28;
				}else{
					/* V1.2.6.2
					toolbarsMenu = [
							['fullscreen', 'source', '|', 'undo', 'redo', '|','selectall','pasteplain', 'forecolor', 'backcolor','removeformat', 'formatmatch','autotypeset', '|',
								'bold', 'italic', 'underline', 'strikethrough',  '|', 'paragraph', '|','rowspacingtop', 'rowspacingbottom','lineheight', '|','fontfamily', 'fontsize', '|',
								'justifyleft', 'justifycenter','|','link', 'unlink', '|', 'insertimage', 'insertvideo','map', 'gmap', 'highlightcode','template', '|',
								'spechars', 'wordimage', '|', 'searchreplace','help', '|','inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', '|','syupimg']
						];
					*/
					/*  */
					toolbarsMenu = [
							['fullscreen', 'source', '|', 'undo', 'redo', '|','selectall','pasteplain', 'forecolor', 'backcolor','removeformat', 'formatmatch','autotypeset', '|',
								'bold', 'italic', 'underline', 'strikethrough',  '|', 'paragraph', '|','rowspacingtop', 'rowspacingbottom','lineheight', '|','fontfamily', 'fontsize', '|',
								'justifyleft', 'justifycenter','|','link', 'unlink', '|', 'insertimage', 'insertvideo','map', 'gmap', 'highlightcode','template', '|',
								'spechars', 'wordimage', '|', 'searchreplace','help', '|','inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', 'drafts', '|','syupimg']
						];
					minFrameH = editorH-84;
				}
				ue = new UE.ui.Editor({
					// 这里可以选择自己需要的工具按钮名称,此处仅选择如下五个
					toolbars:toolbarsMenu,
					// 最小高度,默认320
					minFrameHeight:minFrameH,
					// 允许的最大字符数
					maximumWords:1000000,
					// 是否启用元素路径，默认是显示
					elementPathEnabled:false,
					// 可以最多回退的次数,默认20
					maxUndoCount:99,
					// 是否自动长高,默认true
					autoHeightEnabled:false,
					// 编辑器初始化完成后是否进入源码模式，默认为否。
					sourceEditorFirst:editorFirstMode,
					// 编辑器内部样式,可以用来改变字体等
					initialStyle:'body{font-size:14px;margin:3px;padding:0; line-height:1.4;} p{margin:0;padding:0;}',
					// 关闭字数统计
					wordCount:false
				});
				ue.render(inputId);
			break;
	}

	setTimeout("WindowHeight(-1)",1000);
}

// 获取编辑器中HTML内容
function GetEditorHTML(id) {
	switch (editorMode){
		case 'tinymce':
			return tinyMCE.get(id).getContent();
			break;

		case 'tinymce5':
			return tinyMCE.editors[id].getContent();
			break;

		case 'kindeditor3':
			return KE.html(id);
			break;

		case 'kindeditor4':
			return ke4Editor[id].html();
			break;

		case 'ckeditor3': case 'ckeditor4':
			var ckObj = CKEDITOR.instances[id];
			return ckObj.document.getBody().getHtml();
			break;

		case 'fckeditor':
			var fckObj = FCKeditorAPI.GetInstance(id);
			return fckObj.GetXHTML(true);
			break;

		case 'ueditor':
			var ueObj = UE.getEditor(id);
			return ueObj.getContent();
			break;
	}
}

// 获取编辑器中文字内容
function GetEditorText(id) {
	switch (editorMode){
		case 'tinymce':
			return tinyMCE.get(id).getContent({ format: 'text' });
			break;

		case 'tinymce5':
			return tinyMCE.editors[id].getContent({ format: 'text' });
			break;

		case 'kindeditor3':
			return KE.text(id);
			break;
	
		case 'kindeditor4':
			return ke4Editor[id].text();
			break;

		case 'ckeditor3': case 'ckeditor4':
			var ckObj = CKEDITOR.instances[id];
			return ckObj.document.getBody().getText();
			break;
	
		case 'fckeditor':
			var fckObj = FCKeditorAPI.GetInstance(id);
			return fckObj.EditorDocument.body.innerText;
			break;

		case 'ueditor':
			var ueObj = UE.getEditor(id);
			return ueObj.getContentTxt();
			break;
	}
}

// 设置编辑器中内容
function SetEditorHtml(id, str) {
	switch (editorMode){
		case 'tinymce':
			return tinyMCE.get(id).setContent(str);
			break;

		case 'tinymce5':
			return tinyMCE.editors[id].setContent(str);
			break;

		case 'kindeditor3':
			KE.html(id,str);
			break;
	
		case 'kindeditor4':
			ke4Editor[id].html(str);
			break;

		case 'ckeditor3': case 'ckeditor4':
			var ckObj = CKEDITOR.instances[id];
			ckObj.setData(str);
			break;
	
		case 'fckeditor':
			var fckObj = FCKeditorAPI.GetInstance(id) ;
			fckObj.SetHTML(str) ;
			break;

		case 'ueditor':
			var ueObj = UE.getEditor(id);
			ueObj.setContent(str);
			break;
	}
}

// 插入字符串到编辑器中
function InsertStrToEditor(id, str) {
	switch (editorMode){
		case 'tinymce':
			return tinyMCE.get(id).insertContent(str);
			break;

		case 'tinymce5':
			return tinyMCE.editors[id].insertContent(str);
			break;

		case 'kindeditor3':
			KE.insertHtml(id, str);
			break;
	
		case 'kindeditor4':
			ke4Editor[id].insertHtml(str);
			break;

		case 'ckeditor3': case 'ckeditor4':
			var ckObj = CKEDITOR.instances[id];
			ckObj.insertHtml(str);
			break;
	
		case 'fckeditor':
			var fckObj = FCKeditorAPI.GetInstance(id) ;
			fckObj.InsertHtml(str);
			break;

		case 'ueditor':
			var ueObj = UE.getEditor(id);
			ueObj.execCommand('insertHtml',str);
			break;
	}
}

// 插入【一键复制框】
function CopyStrToEditor(conId){
	var ret = prompt('一键复制框内容', '');
	if(ret !== null) {	//  && ret != '' 填入框 取消返回null，没填直接确定返回空字符
		InsertStrToEditor(conId,"[OT_copy]"+ ret +"[/OT_copy]");
	}
}

// FCKeditor专用-默认显示源代码模式
function FCKeditor_OnComplete(editorInstance){
	if (editorMode=="fckeditor" && editorStartMode=="source"){
		editorInstance.SwitchEditMode();
	}
}
