EDITJS.JS
上传用户:cctv0805
上传日期:2010-01-03
资源大小:345k
文件大小:44k
源码类别:

OA系统

开发平台:

ASP/ASPX

  1. var alloweditsource = new Array();
  2. var tabview = new Array();
  3. var ae_fieldname = new Array();
  4. var ae_imagedata = new Array();
  5. var ae_imageurl = new Array();
  6. var ae_defaultfont = new Array();
  7. var ae_baseurl = new Array();
  8. var ae_breakonenter = new Array();
  9. var inc = '';
  10. ae_breakonenter[1] = true;
  11. ae_baseurl[1] = document.location;
  12. ae_defaultfont[1] = "";
  13. tabview[1] = false;
  14. alloweditsource[1] = true;
  15. ae_imagedata[1] = '';
  16. //ae_imageurl[1] = '/media';
  17. ae_imageurl[1] = '../piclibrary';
  18. DECMD_BOLD =                      5000;
  19. DECMD_COPY =                      5002;
  20. DECMD_CUT =                       5003;
  21. DECMD_DELETE =                    5004;
  22. DECMD_DELETECELLS =               5005;
  23. DECMD_DELETECOLS =                5006;
  24. DECMD_DELETEROWS =                5007;
  25. DECMD_FINDTEXT =                  5008;
  26. DECMD_FONT =                      5009;
  27. DECMD_GETBACKCOLOR =              5010;
  28. DECMD_GETBLOCKFMT =               5011;
  29. DECMD_GETBLOCKFMTNAMES =          5012;
  30. DECMD_GETFONTNAME =               5013;
  31. DECMD_GETFONTSIZE =               5014;
  32. DECMD_GETFORECOLOR =              5015;
  33. DECMD_HYPERLINK =                 5016;
  34. DECMD_IMAGE =                     5017;
  35. DECMD_INDENT =                    5018;
  36. DECMD_INSERTCELL =                5019;
  37. DECMD_INSERTCOL =                 5020;
  38. DECMD_INSERTROW =                 5021;
  39. DECMD_INSERTTABLE =               5022;
  40. DECMD_ITALIC =                    5023;
  41. DECMD_JUSTIFYCENTER =             5024;
  42. DECMD_JUSTIFYLEFT =               5025;
  43. DECMD_JUSTIFYRIGHT =              5026;
  44. DECMD_LOCK_ELEMENT =              5027;
  45. DECMD_MAKE_ABSOLUTE =             5028;
  46. DECMD_MERGECELLS =                5029;
  47. DECMD_ORDERLIST =                 5030;
  48. DECMD_OUTDENT =                   5031;
  49. DECMD_PASTE =                     5032;
  50. DECMD_REDO =                      5033;
  51. DECMD_REMOVEFORMAT =              5034;
  52. DECMD_SELECTALL =                 5035;
  53. DECMD_SEND_BACKWARD =             5036;
  54. DECMD_BRING_FORWARD =             5037;
  55. DECMD_SEND_BELOW_TEXT =           5038;
  56. DECMD_BRING_ABOVE_TEXT =          5039;
  57. DECMD_SEND_TO_BACK =              5040;
  58. DECMD_BRING_TO_FRONT =            5041;
  59. DECMD_SETBACKCOLOR =              5042;
  60. DECMD_SETBLOCKFMT =               5043;
  61. DECMD_SETFONTNAME =               5044;
  62. DECMD_SETFONTSIZE =               5045;
  63. DECMD_SETFORECOLOR =              5046;
  64. DECMD_SPLITCELL =                 5047;
  65. DECMD_UNDERLINE =                 5048;
  66. DECMD_UNDO =                      5049;
  67. DECMD_UNLINK =                    5050;
  68. DECMD_UNORDERLIST =               5051;
  69. DECMD_PROPERTIES =                5052;
  70. DECMD_VIEWSOURCE =   6000;
  71. DECMD_EDITSOURCE =    6001;
  72. DECMD_ABOUT =   6002;
  73. DECMD_TOGGLE_DETAILS =    6004;
  74. DECMD_SAVE =    6005;
  75. DECMD_EDITTABLE =   6006;
  76. DECMD_SPELLCHECK =   6007;
  77. DECMD_SPECIAL_CHARS =    6008;
  78. DECMD_IMAGE_PROPERTIES =        6009;
  79. DECMD_HR =   6010;
  80. OLECMDEXECOPT_DODEFAULT =         0;
  81. OLECMDEXECOPT_PROMPTUSER =        1;
  82. OLECMDEXECOPT_DONTPROMPTUSER =    2;
  83. DECMDF_NOTSUPPORTED =             0;
  84. DECMDF_DISABLED =                 1;
  85. DECMDF_ENABLED =                  3;
  86. DECMDF_LATCHED =                  7;
  87. DECMDF_NINCHED =                  11;
  88. DEAPPEARANCE_FLAT =               0;
  89. DEAPPEARANCE_3D =                 1;
  90. OLE_TRISTATE_UNCHECKED =          0;
  91. OLE_TRISTATE_CHECKED =            1;
  92. OLE_TRISTATE_GRAY =               2;
  93. function ae_onerror(msg, detail, popup) {
  94. errwin = this;
  95. if(popup) errwin = window.open("","","scrollbars=yes,width=500,height=400,resizable=yes", true);
  96. errwin.document.write("<HR>对不起,操作出错。</H4><P>");
  97. errwin.document.write(msg);
  98. errwin.document.write(detail);
  99. errwin.document.write("<P><P></TD></TR></TABLE><P><HR>");
  100. }
  101. var ae_olddocmd; 
  102. aeObjects = new Array(); 
  103. var aeFieldnames = new Array();
  104. var DHTMLSafe; 
  105. var ae_count;
  106. var ae_hot; 
  107. var ae_sourceview=false; 
  108. var ae_oldfontfamily='';  
  109. var ae_oldfontsize='';
  110. var ae_HTMLMode = new Array(); 
  111. var tableparamobj=new ActiveXObject("DEInsertTableParam.DEInsertTableParam");
  112. tableparamobj.NumRows=3;
  113. tableparamobj.NumCols=3;   
  114. tableparamobj.Caption="";
  115. tableparamobj.TableAttrs="border=0 cellpadding=0 cellspacing=0 width=75%";
  116. tableparamobj.CellAttrs="";
  117. var is_ie4 = ((parseInt(navigator.appVersion)  == 4) && (navigator.userAgent.toLowerCase().indexOf("msie 5")==-1) && (navigator.userAgent.toLowerCase().indexOf("msie 6")==-1) );
  118. function ae_previewNewWin(p) {
  119.   prevWin = window.open("", "", "left=40,top=10,width=720,height=540,menubar=no,toolbar=no,location=no,status=no,resizable=yes,scrollbars=yes");
  120.   if (ae_HTMLMode[1] == true){
  121.     prevWin.document.write("<body size=2>" + DHTMLSafe.DOM.body.innerText); 
  122. }else{
  123.   prevWin.document.write("<body size=2>" + DHTMLSafe.DOM.body.innerHTML); 
  124.   }
  125.   if (p==0){
  126.   prevWin.document.title = "内容预览"; 
  127.   }else{
  128.   prevWin.document.write ("n<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WB width=0></OBJECT>n<script language="JavaScript">WB.ExecWB(7,1);</script>");
  129. prevWin.document.close;
  130. }
  131. }
  132. function ae_initialize(num) {
  133. ae_count=num;
  134. thisContentItem=eval("document.all.TempContent");
  135. thisForm=thisContentItem;
  136. while(thisForm.tagName!="FORM"&&thisForm.tagName!="HTML") {
  137. thisForm=thisForm.parentElement; 
  138. }
  139. if(thisForm.tagName!="HTML") {
  140. DHTMLSafe = eval("thisForm.DHTMLSafe"+num);
  141. aeObjects[num] = DHTMLSafe;
  142. aeObjects[thisContentItem.name] = DHTMLSafe;
  143. aeFieldnames[num] = thisContentItem.name;
  144. thisForm.onsubmit = ae_onSubmit;
  145. }
  146. else {
  147. alert("对不起,操作出错。", "", true);
  148. return;
  149. }
  150. DHTMLSafe.NewDocument();
  151. DHTMLSafe.BaseURL=ae_baseurl[num];
  152.   set_tbstates(num);
  153. ae_onLoad(num);
  154. ae_HTMLMode[num] = false;
  155. }
  156. function ae_onLoad(num) {
  157. DHTMLSafe=aeObjects[num];
  158. if(DHTMLSafe.Busy) {
  159. setTimeout("ae_onLoad("+num+");", 100);
  160. return;
  161. }
  162. if(num==1) window.onunload = ae_onUnload;
  163. if(ae_defaultfont[num].length) 
  164. DHTMLSafe.DOM.body.style.font=ae_defaultfont[num];
  165. else {
  166. DHTMLSafe.DOM.body.style.fontFamily="宋体";
  167. DHTMLSafe.DOM.body.style.fontSize="12px";
  168. }
  169. if(oSel=eval('document.all.oQuickFormat'+num)) { //Populate QuickFormat Box
  170. var f=new ActiveXObject("DEGetBlockFmtNamesParam.DEGetBlockFmtNamesParam");
  171.     DHTMLSafe.ExecCommand(DECMD_GETBLOCKFMTNAMES,OLECMDEXECOPT_DODEFAULT,f);
  172. vbarr = new VBArray(f.Names);
  173. arr = vbarr.toArray();
  174. for (var i=0;i<arr.length;i++) {
  175. oOption = document.createElement("OPTION");
  176. oSel.options.add(oOption);
  177. oOption.text=arr[i];
  178. oOption.name=arr[i];
  179. }
  180. }
  181. thisContentItem=eval("document.all.TempContent");
  182. if(thisContentItem.value.length)
  183. aeObjects[num].DOM.body.innerHTML = thisContentItem.value;
  184. else
  185. aeObjects[num].DOM.body.innerHTML = " ";
  186. set_tbstates(num);
  187. if(typeof(aeapi_local_onLoad)=='function')
  188. aeapi_local_onLoad(DHTMLSafe, aeFieldnames[num]);
  189. if (typeof(aeapi_onLoad)=='function')
  190. aeapi_onLoad(DHTMLSafe, aeFieldnames[num]);
  191. }
  192. function ae_onUnload() {
  193. var ae_content = "";
  194. var i;
  195. for(i=1;i<=ae_count;i++) {
  196. DHTMLSafe=aeObjects[i];
  197. thisContentItem = eval("document.all.TempContent");
  198. if(ae_sourceview) ae_editsourceinline(i,false);
  199. var content = DHTMLSafe.DOM.body.innerHTML;
  200. thisContentItem.value = content;
  201. }
  202. }
  203. function ae_onSubmit() {
  204. var ae_content = "";
  205. var i;
  206. for(i=1;i<=ae_count;i++) {
  207. DHTMLSafe=aeObjects[i];
  208. if(ae_sourceview) ae_editsourceinline(i,false);
  209. thisContentItem = eval("document.all.TempContent");
  210. if(typeof(aeapi_local_onBeforeSave)=='function')
  211. ae_content = aeapi_local_onBeforeSave(DHTMLSafe, aeFieldnames[i]);
  212. else if (typeof(aeapi_onBeforeSave)=='function')
  213. ae_content = aeapi_onBeforeSave(DHTMLSafe, aeFieldnames[i]);
  214. else
  215. ae_content = ae_onBeforeSave(DHTMLSafe, aeFieldnames[i]);
  216. thisContentItem.value = ae_content;
  217. }
  218. }
  219. function ae_onkeypress(num) {
  220. var sel;
  221. DHTMLSafe=aeObjects[num];
  222. if(ae_breakonenter[num]||ae_sourceview) {
  223. switch(DHTMLSafe.DOM.parentWindow.event.keyCode) {
  224. case 10:
  225. DHTMLSafe.DOM.parentWindow.event.keyCode = 13;
  226. break;
  227. case 13:
  228. if(DHTMLSafe.QueryStatus(DECMD_UNORDERLIST)!=DECMDF_LATCHED) {
  229. DHTMLSafe.DOM.parentWindow.event.returnValue = false;
  230. sel = DHTMLSafe.DOM.selection.createRange();
  231. sel.pasteHTML("<BR>");
  232. sel.collapse(false);
  233. sel.select();
  234. }
  235. break;
  236. default:
  237. break;
  238. }
  239. }
  240. }
  241. function ae_clear(){
  242. if (confirm("您真的要清除所写的内容吗?")){
  243. DHTMLSafe.DOM.body.innerHTML="";
  244. }
  245. DHTMLSafe.focus();
  246. DHTMLSafe.DOM.body.focus();
  247. }
  248. function ae_onmousedown(num) {
  249. if(typeof(document.all.frame1) != "undefined") {
  250. if(document.all.frame1.style.visibility == "visible") {
  251. cancelTable(false);
  252. return;
  253. }
  254. }
  255. }
  256. function ae_onclick(num) {
  257. set_tbstates(num);
  258. }
  259. function ae_ondisplaychange(num) {
  260. if(DHTMLSafe.Busy) return;
  261.   set_tbstates(num);
  262. }
  263. function ae_onmenuaction(itemIndex, num) {
  264. ae_onCommand(ContextMenu[itemIndex].cmdId, num);
  265. }
  266. function ae_Clear(cmdId, num) {
  267. }
  268. //未完成1.加删除线;2.自定义修改意见;3.加批注
  269. function ae_insertPage(){
  270. DHTMLSafe.DOM.selection.createRange().pasteHTML("<br>[---P---]<br>");
  271. DHTMLSafe.focus();
  272. DHTMLSafe.DOM.body.focus();
  273. }
  274. function insertDelMark(){
  275. DHTMLSafe.document.execCommand('ForeColor', "", "#FF0000");
  276. DHTMLSafe.document.execCommand('StrikeThrough', "", "");
  277. }
  278. function insertErrorMe() {
  279. content =prompt("请写入错误内容:","");
  280. if(content!=null) {
  281. var m_objHTML = DHTMLSafe.DOM.document.selection.createRange();
  282. DHTMLSafe.document.execCommand('underline');
  283. originHTML = m_objHTML.htmlText;
  284. targetHTML = "<span id style=color:red>"+originHTML+"</span>"+"<img style="cursor:hand;"  src=EditorImg/face0.gif alt='"+content+"'>";
  285. m_objHTML.pasteHTML(targetHTML);
  286. DHTMLSafe.document.execCommand('underline');
  287. }
  288. }
  289. function insertPostil(){
  290. if (!validateMode()) return;
  291. content = prompt("请加批注:","");
  292. if(content!=null){
  293. content = "<font color='red'>【" + content + "】</font>";
  294. DHTMLSafe.DOM.document.selection.createRange().pasteHTML(content);
  295. }
  296.   pureText = false;
  297.   DHTMLSafe.focus();
  298. }
  299. //至此
  300. function ae_onCommand(cmdId, num) {
  301. if (ae_HTMLMode[num]) { alert("请先切换到可视编辑模式。");return; }
  302. if(typeof(num)=="undefined") {
  303. num=ae_hot;
  304. }
  305. DHTMLSafe=aeObjects[num];
  306. if(cmdId==null) cmdid=eval(window.event.srcElement.cid);
  307. else cmdid=cmdId;
  308. doFocus=true;
  309. switch(parseInt(cmdid)) {
  310. case DECMD_IMAGE:
  311. oSel = DHTMLSafe.DOM.selection;
  312. if (oSel.type == "Control") {
  313. ae_imageProperties(num);
  314. }else {
  315. DHTMLSafe.DOM.selection.createRange().collapse(false);
  316. onImagewin(num);
  317. }
  318. doFocus=false;
  319. break;
  320. case DECMD_INSERTTABLE:
  321. onTableWin(num);
  322. doFocus=false;
  323. break;
  324. case DECMD_EDITSOURCE:
  325. if(tabview[num]) ae_editsourceinline(num);
  326. else { 
  327. ae_editsource(num);
  328. doFocus=false;
  329. }
  330. break;
  331. case DECMD_ABOUT:
  332. ae_about();
  333. doFocus=false;
  334. break;
  335. case DECMD_TOGGLE_DETAILS:
  336. ae_onToggleDetails(null, num);
  337. break;
  338. //case DECMD_SAVE:
  339. //if (confirm("你确定要保存内容吗?tn点击 [确定] 后保存并将关闭本窗口tnn注意:n如果你不想保留更改内容n请点击 [取消] 后直接关闭窗口。t")){
  340. //document.form1.TempContent.value=DHTMLSafe.DOM.body.innerHTML;
  341. //window.returnValue=DHTMLSafe.DOM.innerHTML;
  342. //window.close();
  343. //}
  344. //editform.ae_tx_content1.value=DHTMLSafe.DOM.body.innerHTML;
  345. //break;
  346. case DECMD_EDITTABLE:
  347. editTableWin(num);
  348. doFocus=false;
  349. break;
  350. case DECMD_HYPERLINK:
  351. ae_hyperlinkwin(num);
  352. doFocus=false;
  353. break;
  354. case DECMD_SPELLCHECK:
  355. ae_spellcheckwin(num);
  356. doFocus=false;
  357. break;
  358. case DECMD_SPECIAL_CHARS:
  359. ae_specialchars();
  360. doFocus=false;
  361. break;
  362. //加
  363. case DECMD_IMAGE_PROPERTIES:
  364. oSel = DHTMLSafe.DOM.selection.createRange();
  365. for (i=0; i<oSel.length; i++) {
  366. if (oSel(i).tagName == "IMG") {
  367. ae_imageProperties(num);
  368. doFocus=false;
  369. }
  370.     }
  371. break;
  372. case DECMD_PASTE:
  373.     ae_onPaste(num);
  374.     doFocus=false;
  375.     break;
  376. case DECMD_HR:
  377. oSel = DHTMLSafe.DOM.selection;
  378. if (oSel.type == "Control") {
  379. alert("您已选中水平线。n如需插入新的水平线,请先取消选择。");
  380. return;
  381. }else{
  382. ae_onHr(num);
  383. doFocus=false;
  384. }
  385. break;
  386. //至此
  387. default:
  388. if(DHTMLSafe.QueryStatus(cmdid)!=DECMDF_DISABLED) {
  389. DHTMLSafe.ExecCommand(cmdid, OLECMDEXECOPT_DODEFAULT);
  390. }
  391. break;
  392. }
  393. if (doFocus) {
  394. DHTMLSafe.focus();
  395. DHTMLSafe.DOM.body.focus();
  396. }
  397. //原if (doFocus) DHTMLSafe.focus();
  398. }
  399. //加
  400. function ae_onHr(num) {
  401. DHTMLSafe=aeObjects[num];
  402. DHTMLSafe.focus();
  403. if (typeof(ae_hrwin) == "undefined" || ae_hrwin.closed) { //short circuit eval
  404. var szURL=inc + "../editor/hr.htm?instance=" + num;
  405. ae_hrwin = window.showModalDialog(szURL,window,"dialogHeight: 210px; dialogWidth: 355px; dialogTop: 150px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  406.   }
  407. }
  408. function ae_imageProperties(num) {
  409. DHTMLSafe=aeObjects[num];
  410. DHTMLSafe.focus();
  411. if (typeof(ae_imgpropwin) == "undefined" || ae_imgpropwin.closed) { //short circuit eval
  412. var szURL=inc + "../editor/imageProperties.htm?instance=" + num;
  413. ae_imgpropwin = window.showModalDialog(szURL,window,"dialogHeight: 300px; dialogWidth: 420px; dialogTop: 150px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  414.   }
  415. }
  416. function replaceFontsWithSpans(aeObject, oElement, sNewClass) {
  417. for(var i=0;i<oElement.childNodes.length;i++) {
  418. replaceFontsWithSpans(aeObject, oElement.childNodes[i], sNewClass);
  419. }
  420. if(oElement.tagName=="FONT") {
  421. if(oElement.face=="ae_newclass") {
  422. sPreserve=oElement.innerHTML;
  423. oNewNode=aeObject.DOM.createElement("SPAN");
  424. oElement.replaceNode(oNewNode);
  425. oNewNode.innerHTML=sPreserve;
  426. oNewNode.className=sNewClass;
  427. }
  428. if(oElement.xclass!=null) {
  429. sPreserve=oElement.innerHTML;
  430. sClass=oElement.xclass;
  431. oNewNode=aeObject.DOM.createElement("SPAN");
  432. oElement.replaceNode(oNewNode);
  433. oNewNode.innerHTML=sPreserve;
  434. oNewNode.className=sClass;
  435. }
  436. else {
  437. var style = "";
  438. if (oElement.face.length) {
  439. style += "font-family: " + oElement.face + ";";
  440. }
  441. if (oElement.size.length) {
  442. var sizeMap = new Array(7,7,9,12,14,18,24,36);
  443. var size = oElement.size;
  444. if (size > 7) size = 7;
  445. if (size==-1) size = 2;
  446. if (size==-2) size = 1;
  447. if (size < -2) size = 1;
  448. var ptsize = sizeMap[size];
  449. style += "font-size: " + ptsize + "pt;";
  450. }
  451. if (oElement.color.length) {
  452. style += "color: " + oElement.color + ";";
  453. }
  454. if (style.length) {
  455. sPreserve=oElement.innerHTML;
  456. oNewNode=aeObject.DOM.createElement("SPAN");
  457. oElement.replaceNode(oNewNode);
  458. oNewNode.innerHTML=sPreserve;
  459. oNewNode.style.cssText=style;
  460. }
  461. }
  462. }
  463. }
  464. function condenseSpans(aeObject, oElement, oPrevious) {
  465.   for(var i=0;i<oElement.childNodes.length;i++) {
  466.    var child = oElement.childNodes[i];
  467.     oElement = condenseSpans(aeObject, child, oElement);
  468.   }
  469.   if (oElement.tagName=="SPAN" && oPrevious != null && oPrevious.tagName =="SPAN") {
  470.     if (oElement.innerText == oPrevious.innerText) {
  471. cClass=oElement.className;
  472. pClass=oPrevious.className;
  473.      if(pClass.length && !cClass.length) {
  474.       oElement.setAttribute("class", pClass);
  475. }
  476. var css = oPrevious.style.cssText;
  477. var styleProps = css.split("; ");
  478. var curStyleProps = oElement.style.cssText.split("; ");
  479. for (var i=0;i<styleProps.length;i++) {
  480. var kv = styleProps[i].split(":");
  481. var key = kv[0];
  482. var value = kv[1];
  483. var hasProp = false;
  484. for (var k=0;k<curStyleProps.length;k++) {
  485. var ckv = curStyleProps[k].split(":");
  486. var cProp = ckv[0];
  487. var cValue = ckv[1];
  488. if (cProp == key) {
  489. hasProp = true;
  490. break;
  491. }
  492. }
  493. if (!hasProp) {
  494. oElement.style.cssText = oElement.style.cssText + ";" + key + ":" + value;
  495. }
  496. }
  497. oPrevious.removeNode(false);
  498. return oElement;
  499.     }
  500.   }
  501.   return oPrevious;
  502. }
  503. function removeExtraniousSpans(aeObject, oElement, oPrevious) {
  504. for(var i=0;i<oElement.childNodes.length;i++) {
  505. removeExtraniousSpans(aeObject, oElement.childNodes[i], oElement);
  506. }
  507. if (oElement.tagName=="SPAN" && oPrevious != null && oPrevious.tagName =="P") {
  508. if (oElement.innerText == oPrevious.innerText) {
  509. cClass=oElement.className;
  510. pClass=oPrevious.className;
  511. if(cClass.length) {
  512. oPrevious.setAttribute("class", pClass);
  513. }
  514. var css = oPrevious.style.cssText;
  515. var styleProps = css.split("; ");
  516. var curStyleProps = oElement.style.cssText.split("; ");
  517. for (var i=0;i<curStyleProps.length;i++) {
  518. var kv = curStyleProps[i].split(":");
  519. var cProp = kv[0];
  520. var cValue = kv[1];
  521. var hasProp = false;
  522. for (var k=0;k<styleProps.length;k++) {
  523. var pkv = styleProps[k].split(":");
  524. var pProp = pkv[0];
  525. var pValue = pkv[1];
  526. if (cProp == pProp) {
  527. hasProp = true;
  528. break;
  529. }
  530. }
  531. if (!hasProp) {
  532. oPrevious.style.cssText = oPrevious.style.cssText + ";" + cProp + ":" + cValue;
  533. }
  534. }
  535. oElement.removeNode(false);
  536.     }
  537.   }
  538. }
  539. function ae_cleanWord(aeObject) {
  540. //var newData = "sadad";
  541. //var newData = aeObject.DOM.body.innerHTML;
  542. //newData = newData.replace(/<o:p>&nbsp;</o:p>/g, ""); 
  543. //newData = newData.replace(/<o:p></o:p>/g, "");
  544. //newData = newData.replace(/o:/g, ""); 
  545. //newData = newData.replace(/<st1:.*?>/g, ""); 
  546. //newData = newData.replace(/<?xml:.*?/>/g, ""); 
  547.     //newData = newData.replace(/<P>&nbsp;</P>/g, "");
  548.     //newData = newData.replace(/&nbsp;/g, "");
  549.     //newData = newData.replace(/\r/g, "<BR>");
  550.     //newData = newData.replace(/\n/g, "<BR>");
  551. //newData = newData.replace(/class=MsoNormal/g, "");
  552. //newData = newData.replace(/class=MsoHeader/g, "");
  553. //newData = newData.replace(/class=MsoBodyText/g, "");
  554. //newData = newData.replace(/style="mso-cellspacing.*"/g, "cellspacing=0");
  555. //newData = newData.replace(/mso-[^";]*/g, "");
  556. //aeObject.DOM.body.innerHTML = newData;
  557. //newData = aeObject.DOM.body.innerHTML;
  558. //newData = newData.replace(/<P></P>/g, "");
  559.     //newData = newData.replace(/<P> </P>/g, "");
  560. //newData = newData.replace(/<SPAN></SPAN>/g, "");
  561. //newData = newData.replace(/<SPAN> </SPAN>/g, " ");
  562. //aeObject.DOM.body.innerHTML = newData;
  563. //removeExtraniousSpans(aeObject, aeObject.DOM.body, null);
  564. }
  565. function ae_onPaste(num) {
  566. DHTMLSafe=aeObjects[num];
  567. window.event.returnValue = true;
  568. var tr = DHTMLSafe.DOM.selection.createRange();
  569. tr.execCommand("Paste");
  570. replaceFontsWithSpans(DHTMLSafe, DHTMLSafe.DOM.body, null);
  571. condenseSpans(DHTMLSafe, DHTMLSafe.DOM.body, null);
  572. //ae_cleanWord(DHTMLSafe);
  573. }
  574. //至此
  575. function ae_onToggleDetails(bVal, num) {
  576. DHTMLSafe=aeObjects[num];
  577. if (bVal == null) {
  578. DHTMLSafe.ShowDetails = !(DHTMLSafe.ShowDetails);
  579. }
  580. else {
  581. DHTMLSafe.ShowDetails = bVal;
  582. }
  583. }
  584. function editTableWin(num) {
  585. editTbl = window.showModalDialog(inc + "../editor/edittable.htm",window,"dialogHeight: 350px; dialogWidth: 350px; dialogTop: 150px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  586. }
  587. function onTableWin(num) {
  588. DHTMLSafe=aeObjects[num];
  589. if(DHTMLSafe.QueryStatus(DECMD_INSERTTABLE) == DECMDF_DISABLED) 
  590. {
  591.     DHTMLSafe.focus();
  592.   return;
  593. }
  594. ae_hot = num;
  595. arr = window.showModalDialog(inc + "../editor/table.htm",window,"dialogHeight: 250px; dialogWidth: 480px; dialogTop: 150px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  596. }
  597. function onTable(num) {
  598. if (ae_HTMLMode[num]) { return; }
  599.  
  600. DHTMLSafe=aeObjects[num];
  601. if(DHTMLSafe.QueryStatus(DECMD_INSERTTABLE) == DECMDF_DISABLED) 
  602. {
  603.     DHTMLSafe.focus();
  604.    return;
  605. }
  606. if( document.all.frame1.style.visibility == "visible" ) {
  607. cancelTable();
  608. return;
  609. }
  610. var str = "<div id="tblsel" style="background-color:#000066;position:absolute;";
  611. str = str + "width:0;height:0;z-index:-1;"></div>";
  612. str = str + makeTable(4, 5);
  613. str = str + "<div style="text-align:center;background-color:menu;font-size: 12px" id="tblstat">插入表格</div>";
  614. var ifrm = document.frames("frame1");
  615. var obj=eval("document.all.ae_tbtn"+num);
  616. var x=0;
  617. var y=0;
  618. ifrm.document.body.innerHTML=str;
  619. while(obj.tagName!="BODY") {
  620. x+=obj.offsetLeft;
  621. y+=obj.offsetTop;
  622. obj=obj.offsetParent;
  623. }
  624. document.all.frame1.style.pixelTop = y + 24;
  625. document.all.frame1.style.pixelLeft = x;
  626. document.all.frame1.style.pixelWidth = 0;
  627. document.all.frame1.style.pixelHeight = 0;
  628. document.all.frame1.style.visibility = "visible";
  629. ae_hot=num;
  630. document.frames("frame1").document.body.onmouseover = paintTable;
  631. document.frames("frame1").document.body.onclick = insertTable;
  632. if(typeof(document.onmousedown)=="function")
  633. ae_olddocmd = document.onmousedown;
  634. else ae_olddoccmd=null;
  635. document.onmousedown = cancelTable;
  636. DHTMLSafe.onmousedown = cancelTable;
  637. event.cancelBubble = true;
  638. ifrm.document.body.onselectstart=new Function("return false;");
  639. document.all.frame1.style.pixelWidth = ifrm.document.all.oTable.offsetWidth + 3
  640. document.all.frame1.style.pixelHeight = ifrm.document.all.oTable.offsetHeight + 3 +
  641. ifrm.document.all.tblstat.offsetHeight;
  642. }
  643. function insertTable(rows, cols, attrs, num) {
  644. if(typeof(num)=="undefined")
  645. num=ae_hot;
  646. DHTMLSafe=aeObjects[num];
  647. if (typeof(rows) == "undefined") {
  648. var se = document.frames('frame1').window.event.srcElement;
  649.   
  650. if(se.tagName!='TD') {
  651. cancelTable();
  652. return;
  653. }
  654. tableparamobj.NumRows = se.parentElement.rowIndex + 1;
  655. tableparamobj.NumCols = se.cellIndex + 1;
  656.    tableparamobj.TableAttrs = "style='border-collapse:collapse;' border=1 bordercolor=#000000 cellPadding=1 cellSpacing=0 width=98% align=center";
  657. cancelTable();
  658. }
  659. else {
  660. tableparamobj.NumRows = rows;
  661. tableparamobj.NumCols = cols;
  662. tableparamobj.TableAttrs = attrs;
  663. }
  664. DHTMLSafe.ExecCommand(DECMD_INSERTTABLE,OLECMDEXECOPT_DODEFAULT, tableparamobj);    
  665. DHTMLSafe.focus();
  666. }
  667. function paintTable() {
  668. var se = document.frames('frame1').window.event.srcElement;
  669. var sr, sc, tbl, fAll;
  670. fAll = document.frames('frame1').document.all;
  671. if(se.tagName!='TD') {
  672. sr = 0;
  673. sc = 0;
  674. var str="&nbsp;Cancel";
  675. fAll.tblsel.style.width = 0;
  676. fAll.tblsel.style.height = 0;
  677. return;
  678. }
  679. tbl=fAll.oTable;
  680. sr=se.parentElement.rowIndex;
  681. sc=se.cellIndex;
  682. if(!is_ie4) {
  683. if(tbl.rows.length == sr+1) {
  684. var r = tbl.insertRow(-1);
  685. var td;
  686. for(var i=0;i<tbl.rows(1).cells.length;i++) {
  687. td = r.insertCell(-1);
  688. td.innerHTML = "&nbsp;";
  689. td.style.pixelWidth = 20;
  690. td.style.pixelHeight = 20;
  691. }
  692. var bdy = document.frames("frame1").document.body;
  693. var ifrm = document.frames("frame1");
  694. document.all.frame1.style.pixelWidth = ifrm.document.all.oTable.offsetWidth + 3
  695. document.all.frame1.style.pixelHeight = ifrm.document.all.oTable.offsetHeight + 3 +
  696. ifrm.document.all.tblstat.offsetHeight;
  697. }
  698. if(tbl.rows(1).cells.length == sc+1) {
  699. var td;
  700. for(var i=0;i<tbl.rows.length;i++) {
  701. td = tbl.rows(i).insertCell(-1);
  702. td.innerHTML = "&nbsp;";
  703. td.style.pixelWidth = 20;
  704. td.style.pixelHeight = 20;
  705. }
  706. var bdy = document.frames("frame1").document.body;
  707. document.all.frame1.style.pixelWidth = bdy.createTextRange().boundingWidth + 5;
  708. document.all.frame1.style.pixelHeight = bdy.createTextRange().boundingHeight + 5;
  709. }
  710. }
  711. var str=(sr+1) + "×" + (sc+1) + "表格";
  712. fAll.tblsel.style.width = se.offsetWidth*(sc+1)+5;
  713. fAll.tblsel.style.height = se.offsetHeight*(sr+1)+5;
  714. fAll.tblstat.innerHTML = str;
  715. }
  716. function makeTable(rows, cols) {
  717. var a, b, str, n;
  718. str = "<table style="table-layout:fixed;border-style:solid; cursor:default;" "; 
  719. str = str + "id="oTable" cellpadding="0" ";
  720. str = str + "cellspacing="0" cols=" + cols;
  721. str = str + " border=6>n";
  722. for (a=0;a<rows;a++) {
  723. str = str + "<tr>n";
  724. for(b=0;b<cols;b++) {
  725. str = str + "<td width="20">" 
  726. str = str + "&nbsp;</td>n";
  727. }
  728. str = str + "</tr>n";
  729. }
  730. str = str + "</table>"
  731. return str;
  732. }
  733. function cancelTable(a) {
  734. document.onmousedown=null;
  735. document.all.frame1.style.visibility = "hidden";
  736. document.all.frame1.style.pixelWidth = 0;
  737. document.all.frame1.style.pixelHeight = 0;
  738. if(a==false) return;
  739. if(typeof(ae_olddocmd)=="function") {
  740. ae_olddocmd(false);
  741. document.onmousedown = ae_olddocmd;
  742. }
  743. ae_olddocmd = null;
  744. document.all.frame1.style.pixelWidth = 10;
  745. document.all.frame1.style.pixelHeight = 10;
  746. }
  747. function onImagewin(num) {
  748. DHTMLSafe=aeObjects[num];
  749. DHTMLSafe.focus();
  750. if (typeof(ae_imgwin) == "undefined" || ae_imgwin.closed) { //short circuit eval
  751. var szURL;
  752. szURL= "../editor/insertimages.htm";
  753. //ae_imgwin = window.showModalDialog(szURL,window,"dialogHeight: 240px; dialogWidth: 330px; dialogTop: 150px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;scroll:no;");
  754. ae_imgwin = window.open(szURL, "ae_imgwin", "left=240,top=200,width=330,height=240,menubar=no,toolbar=no,location=no,status=no,resizable=yes,scrollbars=yes");
  755. }
  756. //ae_imgwin.focus();
  757. }
  758. function onImage(u, base_url, iborder, ialign, ialt, num) {
  759. DHTMLSafe=aeObjects[num];
  760. var img = "<img src="" + u + "" border="" + iborder + "" align="" + ialign + "" alt="" + ialt + "">";
  761. DHTMLSafe.DOM.selection.createRange().pasteHTML(img);
  762. //ae_imgwin.close();
  763. }
  764. function ae_onBeforeSave(aeObject) {
  765. for (var i=0;i<aeObject.DOM.images.length;i++) {
  766. hs=aeObject.DOM.images[i].getAttribute("STYLE",0).height;
  767. ws=aeObject.DOM.images[i].getAttribute("STYLE",0).width;
  768. if(hs.length) {
  769. aeObject.DOM.images[i].removeAttribute("HEIGHT", 0); 
  770. aeObject.DOM.images[i].setAttribute("HEIGHT", replaceString("px", "", hs),0); 
  771. aeObject.DOM.images[i].getAttribute("STYLE",0).removeAttribute("HEIGHT",0);
  772. }
  773. if(ws.length) {
  774. aeObject.DOM.images[i].removeAttribute("WIDTH", 0);
  775. aeObject.DOM.images[i].setAttribute("WIDTH", replaceString("px", "", ws),0); 
  776. aeObject.DOM.images[i].getAttribute("STYLE",0).removeAttribute("WIDTH",0);
  777. }
  778. }
  779. for (var k=0;k<aeObject.DOM.all.tags("TABLE").length;k++) {
  780. hs=aeObject.DOM.all.tags("TABLE").item(k).getAttribute("STYLE",0).height;
  781. ws=aeObject.DOM.all.tags("TABLE").item(k).getAttribute("STYLE",0).width;
  782. if(hs.length) {
  783. aeObject.DOM.all.tags("TABLE").item(k).removeAttribute("HEIGHT", 0); 
  784. aeObject.DOM.all.tags("TABLE").item(k).setAttribute("HEIGHT", replaceString("px", "", hs),0); 
  785. aeObject.DOM.all.tags("TABLE").item(k).getAttribute("STYLE",0).removeAttribute("HEIGHT",0);
  786. }
  787. if(ws.length) {
  788. aeObject.DOM.all.tags("TABLE").item(k).removeAttribute("WIDTH", 0);
  789. aeObject.DOM.all.tags("TABLE").item(k).setAttribute("WIDTH", replaceString("px", "", ws),0); 
  790. aeObject.DOM.all.tags("TABLE").item(k).getAttribute("STYLE",0).removeAttribute("WIDTH",0);
  791. }
  792. }
  793. var content = aeObject.DOM.body.innerHTML;
  794. if(content.length) {
  795. content = aeObject.FilterSourceCode(content);
  796. }
  797. replaceString("&#65279;", " ", content); 
  798. return content;
  799. }
  800. function ae_submit_form(obj, field) {
  801. var i;
  802. for(i=1;i<=ae_count;i++) {
  803. DHTMLSafe=aeObjects[i];
  804. if (typeof(aeapi_local_onBeforeSave) == "function") {
  805. var ae_content = aeapi_local_onBeforeSave(DHTMLSafe, aeFieldnames[num]);
  806. }
  807. else if (typeof(aeapi_onBeforeSave) == "function") {
  808. var ae_content = aeapi_onBeforeSave(DHTMLSafe, aeFieldnames[num]);
  809. }
  810. else {
  811. var ae_content = ae_onBeforeSave(DHTMLSafe, aeFieldnames[num]);
  812. }
  813. eval(obj).elements[element_idx].value = ae_content;
  814. }
  815. eval(obj).submit();
  816. }
  817. function replaceString(oldS,newS,fullS) {
  818. for (var i=0; i<fullS.length; i++) {
  819.   if (fullS.substring(i,i+oldS.length) == oldS) {
  820. fullS = fullS.substring(0,i)+newS+fullS.substring(i+oldS.length,fullS.length);
  821. }
  822. }
  823.   return fullS;
  824. }
  825. function ae_about() {
  826. window.showModalDialog(inc + "../editor/about.htm","","dialogHeight: 260px; dialogWidth: 400px; dialogTop: 150px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  827. }
  828. function ae_editsource(num) {
  829. DHTMLSafe=aeObjects[num];
  830. DHTMLSafe.DOM.selection.empty();
  831. codewin =window.showModalDialog(inc + "../editor/editsource.htm",window,"dialogHeight: 490px; dialogWidth: 485px; dialogTop: 70px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  832. }
  833. function ae_editsourceinline(num, bVal) {
  834. DHTMLSafe=aeObjects[num];
  835. thisContentItem=eval("document.all.TempContent");
  836. if(ae_HTMLMode[num]==bVal) return;
  837. DHTMLSafe.DOM.selection.empty();
  838. if(ae_HTMLMode[num]) { 
  839. document.normaltag.className="latched";
  840. document.normaltag.type="";
  841. document.htmltag.className="flat";
  842. document.htmltag.type="btn";
  843. if(ae_defaultfont[num].length) 
  844. DHTMLSafe.DOM.body.style.font=ae_defaultfont[num];
  845. else {
  846. DHTMLSafe.DOM.body.style.fontFamily="宋体";
  847. DHTMLSafe.DOM.body.style.fontSize="12px";
  848. }
  849. thisContentItem.value=DHTMLSafe.DOM.body.createTextRange().text;
  850. DHTMLSafe.DOM.body.innerHTML = thisContentItem.value;
  851. ae_HTMLMode[num] = false;
  852. }
  853. else { 
  854. var re=/((<br>)+)/ig;
  855. document.normaltag.className="flat";
  856. document.normaltag.type="btn";
  857. document.htmltag.className="latched";
  858. document.htmltag.type="";
  859. DHTMLSafe.DOM.body.style.fontFamily = "宋体";
  860. DHTMLSafe.DOM.body.style.fontSize = "12px";
  861. thisContentItem.value=DHTMLSafe.DOM.body.innerHTML;
  862. DHTMLSafe.DOM.body.innerHTML = "";
  863. DHTMLSafe.DOM.body.createTextRange().text = thisContentItem.value.replace(re, "$1n");
  864. ae_HTMLMode[num] = true;
  865. }
  866. }
  867. function ae_specialchars() {
  868. var szURL = inc + "../editor/specialchars.htm";
  869. ae_specialwin = window.showModalDialog(szURL,window,"dialogHeight: 275px; dialogWidth: 390px; dialogTop: 70px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  870. }
  871. function ae_quickfont(num) {
  872. if (ae_HTMLMode[num]) { return; }
  873. DHTMLSafe=aeObjects[num];
  874. oSel=eval('document.all.oQuickFont'+num);
  875. DHTMLSafe.ExecCommand(DECMD_SETFONTNAME, OLECMDEXECOPT_DODEFAULT, oSel.options[oSel.selectedIndex].name);
  876. DHTMLSafe.focus();
  877. DHTMLSafe.DOM.body.focus();
  878. replaceFontsWithSpans(DHTMLSafe, DHTMLSafe.DOM.body, null);
  879. condenseSpans(DHTMLSafe, DHTMLSafe.DOM.body, null);
  880. }
  881. function ae_quickfontsize(num) {
  882. if (ae_HTMLMode[num]) { return; }
  883. DHTMLSafe=aeObjects[num];
  884. oSel=eval('document.all.oQuickFontSize'+num);
  885. DHTMLSafe.ExecCommand(DECMD_SETFONTSIZE, OLECMDEXECOPT_DODEFAULT, oSel.options[oSel.selectedIndex].value);
  886. DHTMLSafe.focus();
  887. }
  888. function ae_quickformat(num) {
  889. if (ae_HTMLMode[num]) { return; }
  890. DHTMLSafe=aeObjects[num];
  891. oSel=eval('document.all.oQuickFormat'+num);
  892. DHTMLSafe.ExecCommand(DECMD_SETBLOCKFMT, OLECMDEXECOPT_DODEFAULT, oSel.options[oSel.selectedIndex].name);
  893. DHTMLSafe.focus();
  894. }
  895. function ae_hyperlinkwin(num) {
  896. ae_hot=num;
  897. DHTMLSafe=aeObjects[num];
  898. DHTMLSafe.focus();
  899. if(DHTMLSafe.DOM.selection.type=="Control") {
  900. var el=DHTMLSafe.DOM.selection.createRange().commonParentElement();
  901. var tr = DHTMLSafe.DOM.body.createTextRange();
  902. tr.moveToElementText(el);
  903. tr.select();
  904. }
  905. if (typeof(ae_linkwin) == "undefined" || ae_linkwin.closed) { //short circuit eval
  906. var szURL=inc + "../editor/hyperlink.htm";
  907. ae_linkwin = window.showModalDialog(szURL,window,"dialogHeight: 240px; dialogWidth: 400px; dialogTop: 70px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  908. }
  909. }
  910. //加
  911. function ae_imagepropertywin(num) {
  912. ae_imgpropertywin =window.showModalDialog(inc + "../editor/imgproperties.htm",window,"dialogHeight: 350px; dialogWidth: 490px; dialogTop: 70px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  913. }
  914. function ae_imageproperty(num, aWidth, aHeight, aBorder, aSrc, aAlt, aAlign) {
  915. DHTMLSafe=aeObjects[num];
  916. var oSel=DHTMLSafe.DOM.selection.createRange().commonParentElement();
  917. var tr = DHTMLSafe.DOM.body.createTextRange();
  918. hs=oSel.getAttribute("STYLE",0).height;
  919. ws=oSel.getAttribute("STYLE",0).width;
  920. if (hs.length) {
  921. oSel.getAttribute("STYLE",0).removeAttribute("HEIGHT",0);
  922. }
  923. if (ws.length) {
  924. oSel.getAttribute("STYLE",0).removeAttribute("WIDTH",0);
  925. }
  926. oSel.width=aWidth;
  927. oSel.height=aHeight;
  928. oSel.border=aBorder;
  929. oSel.src=aSrc;
  930. oSel.alt=aAlt;
  931. oSel.align=aAlign;
  932. DHTMLSafe.focus();
  933. DHTMLSafe.DOM.body.focus();
  934. tr.moveToElementText(oSel);
  935. tr.collapse(false);
  936. tr.select();
  937. }
  938. //至此
  939. function ae_hyperlink(num, iHref, iTarget, iStyle, iClass, iName) {
  940. DHTMLSafe=aeObjects[num];
  941. var uid="ae"+Math.random().toString();
  942. if(iHref=="" && !iName.length) { // Unlink
  943. if(DHTMLSafe.QueryStatus(DECMD_UNLINK)==DECMDF_ENABLED)
  944. DHTMLSafe.ExecCommand(DECMD_UNLINK);
  945. }
  946. else {
  947. var trSel=DHTMLSafe.DOM.selection.createRange();
  948. if(trSel.compareEndPoints("StartToEnd",trSel)==0) { // Need a brand new link
  949. txtHTML="<A href=""+iHref+"" ";
  950. if(iTarget.length)
  951. txtHTML+="target=""+iTarget+"" ";
  952. if(iStyle.length)
  953. txtHTML+="style=""+iStyle+"" ";
  954. if(iClass.length)
  955. txtHTML+="class=""+iClass+"" ";
  956. if(iName.length)
  957. txtHTML+="name=""+iName+"" ";
  958. txtHTML+=">"+iHref+"</a>";
  959. trSel.pasteHTML(txtHTML);
  960. }
  961. else { 
  962. DHTMLSafe.ExecCommand(DECMD_HYPERLINK,OLECMDEXECOPT_DONTPROMPTUSER,uid);
  963. var coll=DHTMLSafe.DOM.all.tags("A");
  964. for(i=0;i<coll.length;i++) {
  965. if(coll[i].href==uid) {
  966. coll[i].href=iHref;
  967. if(iTarget.length) coll[i].target=iTarget;
  968. else coll[i].removeAttribute("TARGET",0);
  969. if(iStyle.length) coll[i].style.cssText=iStyle;
  970. else {
  971. coll[i].style.cssText="";
  972. }
  973. if(iClass.length) coll[i].className=iClass;
  974. else {
  975. coll[i].className="";
  976. }
  977. }
  978. }
  979. }
  980. }
  981. DHTMLSafe.focus();
  982. }
  983. function ae_spellcheckwin(num) {
  984. if (typeof(ae_spellwin) == "undefined" || ae_spellwin.closed) { //short circuit eval
  985. var szURL=inc + "spellchecker/window.cfm?jsvar=aeObjects["+num+"].DOM.body.innerHTML";
  986. //window.showModalDialog(inc + "editsource.htm",window,"dialogHeight: 490px; dialogWidth: 485px; dialogTop: 70px; dialogLeft: 150px; center: Yes; help: No; resizable: No; status: No;");
  987. ae_spellwin = window.open(szURL, null, "height=230,width=450,status=no,toolbar=no,menubar=no,location=no");
  988. }
  989. ae_spellwin.focus();
  990. }
  991. function ShowMenu(num) {
  992. var menuStrings = new Array();
  993. var menuStates = new Array();
  994. var state;
  995. var i;
  996. var idx = 0;
  997. ae_hot=num;
  998. DHTMLSafe=aeObjects[num];
  999. ContextMenu.length = 0;
  1000. if(alloweditsource[num]) i=0;
  1001. else i=2;
  1002. for (;i<GeneralContextMenu.length; i++) {
  1003. ContextMenu[idx++] = GeneralContextMenu[i];
  1004. }
  1005. if (DHTMLSafe.QueryStatus(DECMD_INSERTROW) != DECMDF_DISABLED) {
  1006. for (i=0; i<TableContextMenu.length; i++) {
  1007. ContextMenu[idx++] = TableContextMenu[i];
  1008. }
  1009. }
  1010.   var tr = DHTMLSafe.DOM.selection.createRange();
  1011. if (DHTMLSafe.DOM.selection.type == "Control") {
  1012. for (i=0; i<ImageContextMenu.length; i++) {
  1013. ContextMenu[idx++] = ImageContextMenu[i];
  1014.     }
  1015. }
  1016. for (i=0; i<ContextMenu.length; i++) {
  1017. menuStrings[i] = ContextMenu[i].string;
  1018. if ((menuStrings[i] != MENU_SEPARATOR) && (ContextMenu[i].cmdId < 6000)) {
  1019. state = DHTMLSafe.QueryStatus(ContextMenu[i].cmdId);
  1020. }
  1021. else {
  1022. state = DECMDF_ENABLED;
  1023. }
  1024. if (state == DECMDF_DISABLED || state == DECMDF_NOTSUPPORTED) {
  1025. menuStates[i] = OLE_TRISTATE_GRAY;
  1026. }
  1027. else if (state == DECMDF_ENABLED || state == DECMDF_NINCHED) {
  1028. menuStates[i] = OLE_TRISTATE_UNCHECKED;
  1029. }
  1030. else { 
  1031. menuStates[i] = OLE_TRISTATE_CHECKED;
  1032. }
  1033. if (ContextMenu[i].cmdId == DECMD_TOGGLE_DETAILS) {
  1034. if (DHTMLSafe.ShowDetails) {
  1035. menuStates[i] = OLE_TRISTATE_CHECKED;
  1036. }
  1037. else {
  1038. menuStates[i] = OLE_TRISTATE_UNCHECKED;
  1039. }
  1040. }
  1041. if(ContextMenu[i].cmdId == DECMD_EDITSOURCE) {
  1042. if(ae_sourceview) {
  1043. menuStates[i] = OLE_TRISTATE_CHECKED;
  1044. }
  1045. else {
  1046. menuStates[i] = OLE_TRISTATE_UNCHECKED;
  1047. }
  1048. }
  1049. }
  1050. DHTMLSafe.SetContextMenu(menuStrings, menuStates);
  1051. }
  1052. function ContextMenuItem(string, cmdId) {
  1053. this.string = string;
  1054. this.cmdId = cmdId;
  1055. }
  1056. function QueryStatusItem(command, element) {
  1057. this.command = command;
  1058. this.element = element;
  1059. }
  1060. var MENU_SEPARATOR = "";
  1061. var ContextMenu = new Array();
  1062. var GeneralContextMenu = new Array();
  1063. var TableContextMenu = new Array();
  1064. var ImageContextMenu = new Array();
  1065. var genId = 0; 
  1066. var tblId = 0;
  1067. var imgId = 0;
  1068. GeneralContextMenu[genId++] = new ContextMenuItem("编辑源代码", DECMD_EDITSOURCE);
  1069. GeneralContextMenu[genId++] = new ContextMenuItem(MENU_SEPARATOR, 0);
  1070. if (!is_ie4) {
  1071. TableContextMenu[tblId++] = new ContextMenuItem(MENU_SEPARATOR, 0);
  1072.    TableContextMenu[tblId++] = new ContextMenuItem("表格属性", DECMD_EDITTABLE);
  1073. }
  1074. TableContextMenu[tblId++] = new ContextMenuItem(MENU_SEPARATOR, 0);
  1075. TableContextMenu[tblId++] = new ContextMenuItem("插入行", DECMD_INSERTROW);
  1076. TableContextMenu[tblId++] = new ContextMenuItem("删除行", DECMD_DELETEROWS);
  1077. TableContextMenu[tblId++] = new ContextMenuItem(MENU_SEPARATOR, 0);
  1078. TableContextMenu[tblId++] = new ContextMenuItem("插入列", DECMD_INSERTCOL);
  1079. TableContextMenu[tblId++] = new ContextMenuItem("删除列", DECMD_DELETECOLS);
  1080. TableContextMenu[tblId++] = new ContextMenuItem(MENU_SEPARATOR, 0);
  1081. TableContextMenu[tblId++] = new ContextMenuItem("插入单元格", DECMD_INSERTCELL);
  1082. TableContextMenu[tblId++] = new ContextMenuItem("删除单元格", DECMD_DELETECELLS);
  1083. TableContextMenu[tblId++] = new ContextMenuItem("合并单元格", DECMD_MERGECELLS);
  1084. TableContextMenu[tblId++] = new ContextMenuItem("拆分单元格", DECMD_SPLITCELL);
  1085. ImageContextMenu[imgId++] = new ContextMenuItem(MENU_SEPARATOR, 0);
  1086. ImageContextMenu[imgId++] = new ContextMenuItem("图片属性", DECMD_IMAGE_PROPERTIES);
  1087. GeneralContextMenu[genId++] = new ContextMenuItem("查找", DECMD_FINDTEXT);
  1088. GeneralContextMenu[genId++] = new ContextMenuItem("全部显示", DECMD_TOGGLE_DETAILS);
  1089. GeneralContextMenu[genId++] = new ContextMenuItem(MENU_SEPARATOR, 0);
  1090. GeneralContextMenu[genId++] = new ContextMenuItem("关于", DECMD_ABOUT);
  1091. function ae_m_out(src) {
  1092. if(src.state==0) return;
  1093. if(src.state==2) { src.className="latched"; return; }
  1094. if(src.type=="btn") {
  1095. window.status="";
  1096. src.className="flat";
  1097. }
  1098. }
  1099. function ae_m_over(src) {
  1100. if(src.state==0) return;
  1101. if(src.state==2) return;
  1102. if(src.type=="btn") {
  1103. window.status=src.alt;
  1104. src.className="outset";
  1105. }
  1106. }
  1107. function ae_m_down(src) {
  1108. if(src.state==0) return;
  1109. if(src.type=="btn") {
  1110. src.className="inset";
  1111. }
  1112. }
  1113. function ae_m_up(src) {
  1114. if(src.state==0) return;
  1115. if(src.state==2) { src.className="latched"; return; }
  1116. if(src.type=="btn") {
  1117. src.className="outset";
  1118. }
  1119. }
  1120. function set_tbstates(num) {
  1121. var pbtn;
  1122. var cid;
  1123. var state;
  1124. DHTMLSafe=aeObjects[num];
  1125. ae_tbar=eval("ae_tbar"+num);
  1126. if(DHTMLSafe.QueryStatus(5002)!=DHTMLSafe.QueryStatus(5003)) return;
  1127. for(var i=0;i<ae_tbar.all.length;i++) {
  1128. pbtn= ae_tbar.all(i);
  1129. cid=pbtn.cid;
  1130. if(cid < 6000&&cid!=DECMD_HYPERLINK) {
  1131. if (!is_ie4) pbtn.style.visibility="visible";
  1132. state=DHTMLSafe.QueryStatus(cid)
  1133.     if(state == DECMDF_DISABLED || state == DECMDF_NOTSUPPORTED) {
  1134. if(pbtn.state!=0) {
  1135. pbtn.className = "disabled";
  1136. pbtn.state = 0;
  1137. }
  1138. }
  1139. else if(state == DECMDF_ENABLED || state == DECMDF_NINCHED){
  1140. if(pbtn.state!=1) {
  1141. pbtn.className = "flat";
  1142. pbtn.state = 1;
  1143. }
  1144. }
  1145. else {   
  1146. if(pbtn.state!=2) {
  1147. pbtn.className = "latched";
  1148. pbtn.state = 2;
  1149. }
  1150. }
  1151. }
  1152. else if(cid==6004) {
  1153. if(DHTMLSafe.ShowDetails) {
  1154. if(pbtn.state!=2) {
  1155. pbtn.className = "latched";
  1156. pbtn.state = 2;
  1157. }
  1158. }
  1159. else {
  1160. if(pbtn.state!=1) {
  1161. pbtn.className = "flat";
  1162. pbtn.state = 1;
  1163. }
  1164. }
  1165. }
  1166. }
  1167. if(oSel=eval('document.all.oQuickFont'+num)){
  1168. if(DHTMLSafe.QueryStatus(DECMD_SETFONTNAME)!=DECMDF_DISABLED&&DHTMLSafe.DOM.selection.type!="control") {
  1169. if(oSel.disabled) oSel.disabled=false;
  1170. fontname=DHTMLSafe.ExecCommand(DECMD_GETFONTNAME);
  1171. if(fontname!=""&&fontname!=null) {
  1172. fCreateNew=true;
  1173. window.status="MoonDowner";
  1174. for(i=0;i<oSel.options.length;i++) {
  1175. if(oSel.options[i].name==fontname) {
  1176. if(!oSel.options[i].selected)
  1177. oSel.options[i].selected=true;
  1178. fCreateNew=false;
  1179. }
  1180. }
  1181. if(fCreateNew) {
  1182. var oOption = document.createElement("OPTION");
  1183. oSel.options.add(oOption,0);
  1184. oOption.text = fontname;
  1185. oOption.name = fontname;
  1186. oOption.selected=true;
  1187. }
  1188. }
  1189. else {
  1190. oSel.selectedIndex=-1;
  1191. }
  1192. }
  1193. else {
  1194. if(!oSel.disabled) oSel.disabled=true;
  1195. }
  1196. }
  1197. if(oSel=eval('document.all.oQuickFontSize'+num)){
  1198. if(DHTMLSafe.QueryStatus(DECMD_SETFONTSIZE)!=DECMDF_DISABLED&&DHTMLSafe.DOM.selection.type!="control") {
  1199. if(oSel.disabled) oSel.disabled=false; 
  1200. fs=DHTMLSafe.ExecCommand(DECMD_GETFONTSIZE);
  1201. if(fs!=null&&fs!="") {
  1202. for(i=0;i<oSel.options.length;i++) {
  1203. if(oSel.options[i].name=="ae_fs"+fs&&!oSel.options[i].selected)
  1204. oSel.options[i].selected=true;
  1205. }
  1206. }
  1207. else {
  1208. oSel.selectedIndex=-1;
  1209. }
  1210. }
  1211. else {
  1212. if(!oSel.disabled) oSel.disabled=true;
  1213. }
  1214. }
  1215. if(oSel=eval('document.all.oQuickFormat'+num)){
  1216. if(DHTMLSafe.QueryStatus(DECMD_SETBLOCKFMT)!=DECMDF_DISABLED&&DHTMLSafe.DOM.selection.type!="control") {
  1217. if(oSel.disabled) oSel.disabled=false;
  1218. fmt=DHTMLSafe.ExecCommand(DECMD_GETBLOCKFMT);
  1219. if(fmt!=""&&fmt!=null) {
  1220. for(i=0;i<oSel.options.length;i++) {
  1221. if(oSel.options[i].name==fmt&&!oSel.options[i].selected)
  1222. oSel.options[i].selected=true;
  1223. }
  1224. }
  1225. else {
  1226. oSel.selectedIndex=-1;
  1227. }
  1228. }
  1229. else {
  1230. if(!oSel.disabled) oSel.disabled=true;
  1231. }
  1232. }
  1233. }
  1234. function aeapi_onLoad(aeObject) {
  1235. aeObject.ShowBorders = true;
  1236. }
  1237. function aeapi_onBeforeSave(aeObject) {
  1238. for (var i=0;i<aeObject.DOM.images.length;i++) {
  1239. hs=aeObject.DOM.images[i].getAttribute("STYLE",0).height;
  1240. ws=aeObject.DOM.images[i].getAttribute("STYLE",0).width;
  1241. if(hs.length) {
  1242. aeObject.DOM.images[i].removeAttribute("HEIGHT", 0); 
  1243. aeObject.DOM.images[i].setAttribute("HEIGHT", replaceString("px", "", hs),0); 
  1244. aeObject.DOM.images[i].getAttribute("STYLE",0).removeAttribute("HEIGHT",0);
  1245. }
  1246. if(ws.length) {
  1247. aeObject.DOM.images[i].removeAttribute("WIDTH", 0);
  1248. aeObject.DOM.images[i].setAttribute("WIDTH", replaceString("px", "", ws),0); 
  1249. aeObject.DOM.images[i].getAttribute("STYLE",0).removeAttribute("WIDTH",0);
  1250. }
  1251. }
  1252. for (var k=0;k<aeObject.DOM.all.tags("TABLE").length;k++) {
  1253. hs=aeObject.DOM.all.tags("TABLE").item(k).getAttribute("STYLE",0).height;
  1254. ws=aeObject.DOM.all.tags("TABLE").item(k).getAttribute("STYLE",0).width;
  1255. if(hs.length) {
  1256. aeObject.DOM.all.tags("TABLE").item(k).removeAttribute("HEIGHT", 0); 
  1257. aeObject.DOM.all.tags("TABLE").item(k).setAttribute("HEIGHT", replaceString("px", "", hs),0); 
  1258. aeObject.DOM.all.tags("TABLE").item(k).getAttribute("STYLE",0).removeAttribute("HEIGHT",0);
  1259. }
  1260. if(ws.length) {
  1261. aeObject.DOM.all.tags("TABLE").item(k).removeAttribute("WIDTH", 0);
  1262. aeObject.DOM.all.tags("TABLE").item(k).setAttribute("WIDTH", replaceString("px", "", ws),0); 
  1263. aeObject.DOM.all.tags("TABLE").item(k).getAttribute("STYLE",0).removeAttribute("WIDTH",0);
  1264. }
  1265. }
  1266. var content = aeObject.DOM.body.innerHTML;
  1267. if(content.length) {
  1268. content = aeObject.FilterSourceCode(content);
  1269. }
  1270. replaceString("&#65279;", " ", content); 
  1271. return content;
  1272. }