BVB Source Codes

Pcook CMS bubble guest v3.0 SDCMS version Show editor.js Source code

Return Download Pcook CMS bubble guest v3.0 SDCMS version: download editor.js Source code - Download Pcook CMS bubble guest v3.0 SDCMS version Source code - Type:.js
  1. /*
  2. *######################################
  3. * eWebEditor v4.00 - Advanced online web based WYSIWYG HTML editor.
  4. * Copyright (c) 2003-2007 eWebSoft.com
  5. *
  6. * For further information go to http://www.ewebsoft.com/
  7. * This copyright notice MUST stay intact for use.
  8. *######################################
  9. */
  10.  
  11. var sCurrMode = null;
  12. var bEditMode = null;
  13. var oLinkField = null;
  14.  
  15. var BrowserInfo = new Object() ;
  16. BrowserInfo.MajorVer = navigator.appVersion.match(/MSIE (.)/)[1] ;
  17. BrowserInfo.MinorVer = navigator.appVersion.match(/MSIE .\.(.)/)[1] ;
  18. BrowserInfo.IsIE55OrMore = BrowserInfo.MajorVer >= 6 || ( BrowserInfo.MajorVer >= 5 && BrowserInfo.MinorVer >= 5 ) ;
  19. config.IsSP2 = (navigator.userAgent.indexOf("SV1") != -1);
  20.  
  21. window.onresize = initWidths;
  22.  
  23. var yToolbars = new Array();
  24.  
  25. var bInitialized = false;
  26. function document.onreadystatechange(){
  27.         if (document.readyState!="complete") {return;}
  28.         if (bInitialized) {return;}
  29.         bInitialized = true;
  30.        
  31.         initHistory();
  32.         initWidths();
  33.  
  34.         oLinkField = parent.document.getElementsByName(sLinkFieldName)[0];
  35.         if ((!oLinkField)&&(config.ServerExt=="aspx")){
  36.                 oLinkField = getSpecialLinkFieldAspx("input");
  37.                 if (!oLinkField){
  38.                         oLinkField = getSpecialLinkFieldAspx("textarea");
  39.                 }
  40.         }
  41.  
  42.         if (!BrowserInfo.IsIE55OrMore){
  43.                 config.InitMode = "TEXT";
  44.         }
  45.        
  46.         if (ContentFlag.value=="0") {
  47.                 ContentEdit.value = oLinkField.value;
  48.                 ContentLoad.value = oLinkField.value;
  49.                 ModeEdit.value = config.InitMode;
  50.                 ContentFlag.value = "1";
  51.         }
  52.  
  53.         setMode(ModeEdit.value);
  54.         setLinkedField() ;
  55. }
  56.  
  57. function getSpecialLinkFieldAspx(s_Tag){
  58.         var els = parent.document.getElementsByTagName(s_Tag);
  59.         for(var i=0;i<els.length;i++){
  60.                 var s_Name = els[i].getAttribute("name");
  61.                 var n = s_Name.lastIndexOf("$");
  62.                 if (n<0){
  63.                         n = s_Name.lastIndexOf(":");
  64.                 }
  65.  
  66.                 if (n >= 0){
  67.                         s_Name = s_Name.substr(n+1);
  68.                         if (s_Name==sLinkFieldName){
  69.                                 return els[i];
  70.                         }
  71.                 }
  72.         }
  73.         return null;
  74. }
  75.  
  76. function initWidths(){
  77.         var i, curr;
  78.         for (i=0; i<document.body.all.length;i++){
  79.                 curr=document.body.all[i];
  80.                 if (curr.className == "yToolbar"){
  81.                         InitTB(curr);
  82.                         yToolbars[yToolbars.length] = curr;
  83.                 }
  84.         }
  85. }
  86.  
  87. function InitBtn(btn) {
  88.         btn.onmouseover = BtnMouseOver;
  89.         btn.onmouseout = BtnMouseOut;
  90.         btn.onmousedown = BtnMouseDown;
  91.         btn.onmouseup = BtnMouseUp;
  92.         btn.ondragstart = YCancelEvent;
  93.         btn.onselectstart = YCancelEvent;
  94.         btn.onselect = YCancelEvent;
  95.         btn.YUSERONCLICK = btn.onclick;
  96.         btn.onclick = YCancelEvent;
  97.         btn.YINITIALIZED = true;
  98.         return true;
  99. }
  100.  
  101. function InitTB(y) {
  102.         y.TBWidth = 0;
  103.         if (! PopulateTB(y)) {return false;}
  104.         y.style.posWidth = y.TBWidth;
  105.         return true;
  106. }
  107.  
  108. function YCancelEvent() {
  109.         event.returnValue=false;
  110.         event.cancelBubble=true;
  111.         return false;
  112. }
  113.  
  114. function BtnMouseOver() {
  115.         if (event.srcElement.tagName != "IMG") {return false;}
  116.         var image = event.srcElement;
  117.         var element = image.parentElement;
  118.        
  119.         if (image.className == "Ico") {
  120.                 element.className = "BtnMouseOverUp";
  121.         }else if (image.className == "IcoDown") {
  122.                 element.className = "BtnMouseOverDown";
  123.         }
  124.  
  125.         event.cancelBubble = true;
  126. }
  127.  
  128. function BtnMouseOut() {
  129.         if (event.srcElement.tagName != "IMG") {
  130.                 event.cancelBubble = true;
  131.                 return false;
  132.         }
  133.  
  134.         var image = event.srcElement;
  135.         var element = image.parentElement;
  136.         yRaisedElement = null;
  137.        
  138.         element.className = "Btn";
  139.         image.className = "Ico";
  140.  
  141.         event.cancelBubble = true;
  142. }
  143.  
  144. function BtnMouseDown() {
  145.         if (event.srcElement.tagName != "IMG") {
  146.                 event.cancelBubble = true;
  147.                 event.returnValue=false;
  148.                 return false;
  149.         }
  150.  
  151.         var image = event.srcElement;
  152.         var element = image.parentElement;
  153.  
  154.         element.className = "BtnMouseOverDown";
  155.         image.className = "IcoDown";
  156.  
  157.         event.cancelBubble = true;
  158.         event.returnValue=false;
  159.         return false;
  160. }
  161.  
  162. function BtnMouseUp() {
  163.         if (event.srcElement.tagName != "IMG") {
  164.                 event.cancelBubble = true;
  165.                 return false;
  166.         }
  167.  
  168.         var image = event.srcElement;
  169.         var element = image.parentElement;
  170.  
  171.         if (element.YUSERONCLICK) {
  172.                 eval(element.YUSERONCLICK + "anonymous()");
  173.         }
  174.  
  175.         element.className = "BtnMouseOverUp";
  176.         image.className = "Ico";
  177.  
  178.         event.cancelBubble = true;
  179.         return false;
  180. }
  181.  
  182. function PopulateTB(y) {
  183.         var i, elements, element;
  184.  
  185.         elements = y.children;
  186.         for (i=0; i<elements.length; i++) {
  187.                 element = elements[i];
  188.                 if (element.tagName == "SCRIPT" || element.tagName == "!") {continue;}
  189.                
  190.                 switch (element.className) {
  191.                 case "Btn":
  192.                         if (element.YINITIALIZED == null) {
  193.                                 if (! InitBtn(element)) {
  194.                                         alert("Problem initializing:" + element.id);
  195.                                         return false;
  196.                                 }
  197.                         }
  198.                        
  199.                         element.style.posLeft = y.TBWidth;
  200.                         y.TBWidth += element.offsetWidth + 1;
  201.                         break;
  202.                        
  203.                 case "TBGen":
  204.                         element.style.posLeft = y.TBWidth;
  205.                         y.TBWidth += element.offsetWidth + 1;
  206.                         break;
  207.                        
  208.                 case "TBSep":
  209.                         element.style.posLeft = y.TBWidth + 2;
  210.                         y.TBWidth += 5;
  211.                         break;
  212.                        
  213.                 case "TBHandle":
  214.                         element.style.posLeft = 2;
  215.                         y.TBWidth += element.offsetWidth + 7;
  216.                         break;
  217.                        
  218.                 default:
  219.                         alert("Invalid class: " + element.className + " on Element: " + element.id + " <" + element.tagName + ">");
  220.                         return false;
  221.                 }
  222.         }
  223.  
  224.         y.TBWidth += 1;
  225.         return true;
  226. }
  227.  
  228.  
  229. function setLinkedField() {
  230.         if (! oLinkField) {return ;}
  231.         var oForm = oLinkField.form ;
  232.         if (!oForm) {return ;}
  233.  
  234.         oForm.attachEvent("onsubmit", AttachSubmit) ;
  235.         if (! oForm.submitEditor) oForm.submitEditor = new Array() ;
  236.         oForm.submitEditor[oForm.submitEditor.length] = AttachSubmit ;
  237.         if (! oForm.originalSubmit) {
  238.                 oForm.originalSubmit = oForm.submit ;
  239.                 oForm.submit = function() {
  240.                         if (this.submitEditor) {
  241.                                 for (var i = 0 ; i < this.submitEditor.length ; i++) {
  242.                                         this.submitEditor[i]() ;
  243.                                 }
  244.                         }
  245.                         this.originalSubmit() ;
  246.                 }
  247.         }
  248.  
  249.         oForm.attachEvent("onreset", AttachReset) ;
  250.         if (! oForm.resetEditor) oForm.resetEditor = new Array() ;
  251.         oForm.resetEditor[oForm.resetEditor.length] = AttachReset ;
  252.         if (! oForm.originalReset) {
  253.                 oForm.originalReset = oForm.reset ;
  254.                 oForm.reset = function() {
  255.                         if (this.resetEditor) {
  256.                                 for (var i = 0 ; i < this.resetEditor.length ; i++) {
  257.                                         this.resetEditor[i]() ;
  258.                                 }
  259.                         }
  260.                         this.originalReset() ;
  261.                 }
  262.         }
  263. }
  264.  
  265. function AttachSubmit() {
  266.         var oForm = oLinkField.form ;
  267.         if (!oForm) {return;}
  268.        
  269.         var html = getHTML();
  270.         ContentEdit.value = html;
  271.         if (sCurrMode=="TEXT"){
  272.                 html = HTMLEncode(html);
  273.         }
  274.         splitTextField(oLinkField, html);
  275. }
  276.  
  277. function doSubmit(){
  278.         var oForm = oLinkField.form ;
  279.         if (!oForm) {return ;}
  280.         oForm.submit();
  281. }
  282.  
  283. function AttachReset() {
  284.         if(bEditMode){
  285.                 eWebEditor.document.body.innerHTML = ContentLoad.value;
  286.         }else{
  287.                 eWebEditor.document.body.innerText = ContentLoad.value;
  288.         }
  289. }
  290.  
  291. function onHelp(){
  292.         showDialog('about.htm');
  293.         return false;
  294. }
  295.  
  296. function onPaste() {
  297.         if (sCurrMode=="VIEW") {return false;}
  298.         if (!history.saved){saveHistory();}
  299.  
  300.         if (sCurrMode=="EDIT"){
  301.                 var sHTML = GetClipboardHTML() ;
  302.                 if ((config.AutoDetectPasteFromWord=="1") && BrowserInfo.IsIE55OrMore) {
  303.                         var re = /<\w[^>]* class="?MsoNormal"?/gi ;
  304.                         if ( re.test(sHTML)){
  305.                                 if ( confirm("你要粘贴的内容好象是从Word中拷出来的,是否要先清除Word格式再粘贴?") ){
  306.                                         cleanAndPaste( sHTML ) ;
  307.                                         saveHistory();
  308.                                         return false ;
  309.                                 }
  310.                         }
  311.                 }
  312.                 return true;
  313.         }else{
  314.                 eWebEditor.document.selection.createRange().pasteHTML(HTMLEncode( clipboardData.getData("Text"))) ;
  315.                 saveHistory();
  316.                 return false;
  317.         }
  318. }
  319.  
  320. function onKeyDown(event){
  321.         var n_KeyCode = event.keyCode;
  322.         var s_Key = String.fromCharCode(n_KeyCode).toUpperCase();
  323.        
  324.  
  325.         // F2
  326.         if (n_KeyCode==113){
  327.                 showBorders();
  328.                 return false;
  329.         }
  330.         if (event.ctrlKey){
  331.                 // Ctrl+Enter
  332.                 if (n_KeyCode==10){
  333.                         doSubmit();
  334.                         return false;
  335.                 }
  336.                 // Ctrl++
  337.                 if (s_Key=="+"){
  338.                         sizeChange(300);
  339.                         return false;
  340.                 }
  341.                 // Ctrl+-
  342.                 if (s_Key=="-"){
  343.                         sizeChange(-300);
  344.                         return false;
  345.                 }
  346.                 // Ctrl+1
  347.                 if (s_Key=="1"){
  348.                         setMode("CODE");
  349.                         return false;
  350.                 }
  351.                 // Ctrl+2
  352.                 if (s_Key=="2"){
  353.                         setMode("EDIT");
  354.                         return false;
  355.                 }
  356.                 // Ctrl+3
  357.                 if (s_Key=="3"){
  358.                         setMode("TEXT");
  359.                         return false;
  360.                 }
  361.                 // Ctrl+4
  362.                 if (s_Key=="4"){
  363.                         setMode("VIEW");
  364.                         return false;
  365.                 }
  366.         }
  367.  
  368.  
  369.         switch(sCurrMode){
  370.         case "VIEW":
  371.                 return true;
  372.                 break;
  373.         case "EDIT":
  374.                 if (event.ctrlKey){
  375.                         // Ctrl+D
  376.                         if (s_Key == "D"){
  377.                                 PasteWord();
  378.                                 return false;
  379.                         }
  380.                         // Ctrl+R
  381.                         if (s_Key == "R"){
  382.                                 findReplace();
  383.                                 return false;
  384.                         }
  385.                         // Ctrl+Z
  386.                         if (s_Key == "Z"){
  387.                                 goHistory(-1);
  388.                                 return false;
  389.                         }
  390.                         // Ctrl+Y
  391.                         if (s_Key == "Y"){
  392.                                 goHistory(1);
  393.                                 return false;
  394.                         }
  395.                 }
  396.                 break;
  397.         default:
  398.                 if (n_KeyCode==13){
  399.                         if (!history.saved){saveHistory();}
  400.                         history.saved = false;
  401.                         var sel = eWebEditor.document.selection.createRange();
  402.                         sel.pasteHTML("<BR>");
  403.                         event.cancelBubble = true;
  404.                         event.returnValue = false;
  405.                         sel.select();
  406.                         sel.moveEnd("character", 1);
  407.                         sel.moveStart("character", 1);
  408.                         sel.collapse(false);
  409.                         return false;
  410.                 }
  411.                 if (event.ctrlKey){
  412.                         // Ctrl+B,I,U
  413.                         if ((s_Key == "B")||(s_Key == "I")||(s_Key == "U")){
  414.                                 return false;
  415.                         }
  416.                         // Ctrl+Z
  417.                         if (s_Key == "Z"){
  418.                                 goHistory(-1);
  419.                                 return false;
  420.                         }
  421.                         // Ctrl+Y
  422.                         if (s_Key == "Y"){
  423.                                 goHistory(1);
  424.                                 return false;
  425.                         }
  426.                 }
  427.                 break;
  428.         }
  429.  
  430.  
  431.         if ((n_KeyCode==13)||(n_KeyCode==8)||(n_KeyCode==46)){                  //Enter,Backspace,Del
  432.                 if (!history.saved){saveHistory();}
  433.                 history.saved = false;
  434.         }else if ((n_KeyCode>=33)&&(n_KeyCode<=40)){                                    //PageUp,PageDown,End,Home,Left,Up,Right,Down
  435.                 if (!history.saved){saveHistory();}
  436.         }else if (!event.ctrlKey && s_Key!="A" && s_Key!="F"){                  //Ctrl+A,F
  437.                 history.saved = false;
  438.         }
  439.  
  440.         return true;
  441. }
  442.  
  443.  
  444.  
  445. var oResizing = new Object;
  446.  
  447. function onMouseDown(){
  448.         oResizing.El = null;
  449.         if (eWebEditor.document.selection.type == "Control") {
  450.                 var oControlRange = eWebEditor.document.selection.createRange();
  451.                 oResizing.El = oControlRange(0);
  452.                 oResizing.W = oResizing.El.style.width;
  453.                 oResizing.H = oResizing.El.style.height;
  454.         }
  455.  
  456.         if (!history.saved){saveHistory();}
  457. }
  458.  
  459. function onMouseUp(){
  460.         if (oResizing.El){
  461.                 if ((oResizing.El.style.width!=oResizing.W)||(oResizing.El.style.height!=oResizing.H)){
  462.                         saveHistory();
  463.                 }
  464.         }
  465. }
  466.  
  467.  
  468. function doDragEnd(){
  469.         if (!history.saved){saveHistory();}
  470.         var oSelection = eWebEditor.document.selection.createRange();
  471.         var sRangeType = eWebEditor.document.selection.type;
  472.         if (sRangeType == "Control") {
  473.                 var oControl = oSelection.item(0);
  474.                 if (oControl.tagName == "IMG"){
  475.                         oControl.src = FullPath2SetPath(oControl.src);
  476.                 }
  477.         }
  478.         if (sRangeType == "Text") {
  479.                 var els = eWebEditor.document.body.getElementsByTagName("IMG");
  480.                 var oRngTemp = eWebEditor.document.body.createTextRange();
  481.                 for(var i=0;i<els.length;i++){
  482.                         oRngTemp.moveToElementText(els(i));
  483.                         if (oSelection.inRange(oRngTemp)){
  484.                                 els(i).src = FullPath2SetPath(els(i).src)
  485.                         }
  486.                 }
  487.         }
  488.  
  489.         saveHistory();
  490.         return true;
  491. }
  492.  
  493. function FullPath2SetPath(url){
  494.         if (url.indexOf("://")<0){return url;}
  495.         var s_SitePath = getSitePath();
  496.         if (url.indexOf(s_SitePath) < 0){return url;}
  497.  
  498.         return url.substr(s_SitePath.length);
  499. }
  500.  
  501. function getSitePath(){
  502.         var sSitePath = document.location.protocol + "//" + document.location.host;
  503.         if (sSitePath.substr(sSitePath.length-3) == ":80"){
  504.                 sSitePath = sSitePath.substring(0,sSitePath.length-3);
  505.         }
  506.         return sSitePath;
  507. }
  508.  
  509. function GetClipboardHTML() {
  510.         var oDiv = document.getElementById("eWebEditor_Temp_HTML")
  511.         oDiv.innerHTML = "" ;
  512.        
  513.         var oTextRange = document.body.createTextRange() ;
  514.         oTextRange.moveToElementText(oDiv) ;
  515.         oTextRange.execCommand("Paste") ;
  516.        
  517.         var sData = oDiv.innerHTML ;
  518.         oDiv.innerHTML = "" ;
  519.        
  520.         return sData ;
  521. }
  522.  
  523. function cleanAndPaste( html ) {
  524.         html = html.replace(/<\/?SPAN[^>]*>/gi, "" );
  525.         html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
  526.         html = html.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3") ;
  527.         html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
  528.         html = html.replace(/<\\?\?xml[^>]*>/gi, "") ;
  529.         html = html.replace(/<\/?\w+:[^>]*>/gi, "") ;
  530.         html = html.replace(/&nbsp;/, " " );
  531.        
  532.         insertHTML( html ) ;
  533. }
  534.  
  535. function insertHTML(html) {
  536.         if (isModeView()) {return false;}
  537.         eWebEditor.focus();
  538.         if (eWebEditor.document.selection.type.toLowerCase() != "none"){
  539.                 eWebEditor.document.selection.clear() ;
  540.         }
  541.         if (sCurrMode!="EDIT"){
  542.                 html=HTMLEncode(html);
  543.         }
  544.         eWebEditor.document.selection.createRange().pasteHTML(html) ;
  545. }
  546.  
  547. function setHTML(html, b_NotSaveHistory) {
  548.         ContentEdit.value = html;
  549.         switch (sCurrMode){
  550.         case "CODE":
  551.                 eWebEditor.document.designMode="On";
  552.                 eWebEditor.document.open();
  553.                 eWebEditor.document.write(getStyleEditorHeader());
  554.                 eWebEditor.document.body.innerText=html;
  555.                 eWebEditor.document.body.contentEditable="true";
  556.                 eWebEditor.document.close();
  557.                 bEditMode=false;
  558.                 break;
  559.         case "EDIT":
  560.                 eWebEditor.document.designMode="On";
  561.                 eWebEditor.document.open();
  562.                 eWebEditor.document.write(getStyleEditorHeader()+html);
  563.                 eWebEditor.document.body.contentEditable="true";
  564.                 eWebEditor.document.execCommand("2D-Position",true,true);
  565.                 eWebEditor.document.execCommand("MultipleSelection", true, true);
  566.                 eWebEditor.document.execCommand("LiveResize", true, true);
  567.                 eWebEditor.document.close();
  568.                 doZoom(nCurrZoomSize);
  569.                 bEditMode=true;
  570.                 break;
  571.         case "TEXT":
  572.                 eWebEditor.document.designMode="On";
  573.                 eWebEditor.document.open();
  574.                 eWebEditor.document.write(getStyleEditorHeader());
  575.                 eWebEditor.document.body.innerText=html;
  576.                 eWebEditor.document.body.contentEditable="true";
  577.                 eWebEditor.document.close();
  578.                 bEditMode=false;
  579.                 break;
  580.         case "VIEW":
  581.                 eWebEditor.document.designMode="off";
  582.                 eWebEditor.document.open();
  583.                 eWebEditor.document.write(getStyleEditorHeader()+html);
  584.                 eWebEditor.document.body.contentEditable="false";
  585.                 eWebEditor.document.close();
  586.                 bEditMode=false;
  587.                 break;
  588.         }
  589.  
  590.         eWebEditor.document.body.onpaste = onPaste ;
  591.         eWebEditor.document.body.onhelp = onHelp ;
  592.         eWebEditor.document.body.ondragend = new Function("return doDragEnd();");
  593.         eWebEditor.document.onkeydown = new Function("return onKeyDown(eWebEditor.event);");
  594.         eWebEditor.document.oncontextmenu=new Function("return showContextMenu(eWebEditor.event);");
  595.         eWebEditor.document.onmousedown = new Function("return onMouseDown();");
  596.         eWebEditor.document.onmouseup = new Function("return onMouseUp();");
  597.  
  598.         if ((borderShown != "0")&&bEditMode) {
  599.                 borderShown = "0";
  600.                 showBorders();
  601.         }
  602.  
  603.         if (!b_NotSaveHistory){
  604.                 saveHistory();
  605.         }
  606. }
  607.  
  608. function getHTML() {
  609.         var html;
  610.         if((sCurrMode=="EDIT")||(sCurrMode=="VIEW")){
  611.                 html = eWebEditor.document.body.innerHTML;
  612.         }else{
  613.                 html = eWebEditor.document.body.innerText;
  614.         }
  615.         if (sCurrMode!="TEXT"){
  616.                 if ((html.toLowerCase()=="<p>&nbsp;</p>")||(html.toLowerCase()=="<p></p>")){
  617.                         html = "";
  618.                 }
  619.         }
  620.         return html;
  621. }
  622.  
  623. function appendHTML(html) {
  624.         if(isModeView()){return false;}
  625.         if(sCurrMode=="EDIT"){
  626.                 eWebEditor.document.body.innerHTML += html;
  627.         }else{
  628.                 eWebEditor.document.body.innerText += html;
  629.         }
  630. }
  631.  
  632. function PasteWord(){
  633.         if(!validateMode()){return;}
  634.         eWebEditor.focus();
  635.         if (!history.saved){saveHistory();}
  636.         if(BrowserInfo.IsIE55OrMore){
  637.                 cleanAndPaste( GetClipboardHTML() ) ;
  638.                 saveHistory();
  639.         }else if(confirm("此功能要求IE5.5版本以上,你当前的浏览器不支持,是否按常规粘贴进行?")){
  640.                 format("paste") ;
  641.         }
  642.         eWebEditor.focus();
  643. }
  644.  
  645. function PasteText(){
  646.         if(!validateMode()){return;}
  647.         eWebEditor.focus();
  648.         if (!history.saved){saveHistory();}
  649.         var sText = HTMLEncode( clipboardData.getData("Text") ) ;
  650.         insertHTML(sText);
  651.         saveHistory();
  652.         eWebEditor.focus();
  653. }
  654.  
  655. function validateMode() {
  656.         if(sCurrMode=="EDIT"){return true;}
  657.         alert("需转换为编辑状态后才能使用编辑功能!");
  658.         eWebEditor.focus();
  659.         return false;
  660. }
  661.  
  662. function isModeView(){
  663.         if (sCurrMode=="VIEW"){
  664.                 alert("预览时不允许设置编辑区内容。");
  665.                 return true;
  666.         }
  667.         return false;
  668. }
  669.  
  670. function format(what,opt) {
  671.         if(!validateMode()){return;}
  672.         eWebEditor.focus();
  673.         if (!history.saved){saveHistory();}
  674.         if(opt=="RemoveFormat"){
  675.                 what=opt;
  676.                 opt=null;
  677.         }
  678.         if(opt==null) {
  679.                 var s = "";
  680.                 switch(what.toLowerCase()){
  681.                 case "justifyleft":
  682.                         s = "left";
  683.                         break;
  684.                 case "justifycenter":
  685.                         s = "center"
  686.                         break;
  687.                 case "justifyright":
  688.                         s = "right"
  689.                         break;
  690.                 }
  691.  
  692.                 var b = false;
  693.                 if (s){
  694.                         var sel = eWebEditor.document.selection.createRange();
  695.                         sel.type = eWebEditor.document.selection.type;
  696.                         if (sel.type=="Control"){
  697.                                 var oControl = sel.item(0);
  698.                                 try{
  699.                                         oControl.align = s;
  700.                                         b = true;
  701.                                 }catch(e){}
  702.                         }
  703.                 }
  704.                
  705.                 if (!b){
  706.                         eWebEditor.document.execCommand(what);
  707.                 }
  708.         }else{
  709.                 eWebEditor.document.execCommand(what,"",opt);
  710.         }
  711.         saveHistory();
  712.         eWebEditor.focus();
  713. }
  714.  
  715. function formatFont(what, v){
  716.         if (!history.saved){saveHistory();}
  717.         eWebEditor.document.execCommand("fontname","","eWebEditor_Temp_FontName");
  718.         var a_Font = eWebEditor.document.body.getElementsByTagName("FONT");
  719.         for (var i=0; i<a_Font.length; i++){
  720.                 var o_Font = a_Font[i];
  721.                 if (o_Font.getAttribute("face") == "eWebEditor_Temp_FontName"){
  722.                         delInFont(o_Font, what);
  723.                         setInFont(o_Font, what, v);
  724.                         o_Font.removeAttribute("face");
  725.                 }
  726.         }
  727.         saveHistory();
  728. }
  729.  
  730. function setStyleValue(obj, what, v){
  731.         try{
  732.                 switch(what){
  733.                 case "fontname":
  734.                         obj.style.fontFamily = v;
  735.                         break;
  736.                 case "fontsize":
  737.                         obj.style.fontSize = v;
  738.                         break;
  739.                 default:
  740.                         break;
  741.                 }
  742.         }catch(e){}
  743. }
  744.  
  745. function delInFont(obj, what){
  746.         setStyleValue(obj, what, "");
  747.         var o_Children = obj.children;
  748.         for (var j=0; j<o_Children.length; j++){
  749.                 delInFont(o_Children[j], what);
  750.  
  751.                 if ((o_Children[j].tagName=="FONT") || (o_Children[j].tagName=="SPAN")){
  752.                         if ((o_Children[j].style.cssText=="")||(o_Children[j].innerHTML=="")){
  753.                                 o_Children[j].outerHTML = o_Children[j].innerHTML;
  754.                         }
  755.                 }
  756.         }
  757. }
  758.  
  759. function setInFont(obj, what, v){
  760.         setStyleValue(obj, what, v);
  761.         var o_Children = obj.children;
  762.         for (var j=0; j<o_Children.length; j++){
  763.                 if (o_Children[j].innerHTML!=""){
  764.                         setInFont(o_Children[j], what, v);
  765.                 }
  766.         }
  767. }
  768.  
  769. function VerifyFocus() {
  770.         if ( eWebEditor )
  771.                 eWebEditor.focus();
  772. }
  773.  
  774. function setMode(NewMode){
  775.         if (NewMode==sCurrMode){return;}
  776.  
  777.         if (!BrowserInfo.IsIE55OrMore){
  778.                 if ((NewMode=="CODE") || (NewMode=="EDIT") || (NewMode=="VIEW")){
  779.                         alert("HTML编辑模式需要IE5.5版本以上的支持!");
  780.                         return false;
  781.                 }
  782.         }
  783.  
  784.         if (NewMode=="TEXT"){
  785.                 if (sCurrMode==ModeEdit.value){
  786.                         if (!confirm("警告!切换到纯文本模式会丢失您所有的HTML格式,您确认切换吗?")){
  787.                                 return false;
  788.                         }
  789.                 }
  790.         }
  791.  
  792.         var sBody = "";
  793.         switch(sCurrMode){
  794.         case "CODE":
  795.                 if (NewMode=="TEXT"){
  796.                         eWebEditor_Temp_HTML.innerHTML = eWebEditor.document.body.innerText;
  797.                         sBody = eWebEditor_Temp_HTML.innerText;
  798.                 }else{
  799.                         sBody = eWebEditor.document.body.innerText;
  800.                 }
  801.                 break;
  802.         case "TEXT":
  803.                 sBody = eWebEditor.document.body.innerText;
  804.                 sBody = HTMLEncode(sBody);
  805.                 break;
  806.         case "EDIT":
  807.         case "VIEW":
  808.                 if (NewMode=="TEXT"){
  809.                         sBody = eWebEditor.document.body.innerText;
  810.                 }else{
  811.                         sBody = eWebEditor.document.body.innerHTML;
  812.                 }
  813.                 break;
  814.         default:
  815.                 sBody = ContentEdit.value;
  816.                 break;
  817.         }
  818.  
  819.         try{
  820.                 document.all["eWebEditor_CODE"].className = "StatusBarBtnOff";
  821.                 document.all["eWebEditor_EDIT"].className = "StatusBarBtnOff";
  822.                 document.all["eWebEditor_TEXT"].className = "StatusBarBtnOff";
  823.                 document.all["eWebEditor_VIEW"].className = "StatusBarBtnOff";
  824.                 document.all["eWebEditor_"+NewMode].className = "StatusBarBtnOn";
  825.                 }
  826.         catch(e){
  827.                 }
  828.        
  829.         sCurrMode = NewMode;
  830.         ModeEdit.value = NewMode;
  831.         setHTML(sBody);
  832.         disableChildren(eWebEditor_Toolbar);
  833.  
  834. }
  835.  
  836. function disableChildren(obj){
  837.         if (obj){
  838.                 obj.disabled=(!bEditMode);
  839.                 for (var i=0; i<obj.children.length; i++){
  840.                         disableChildren(obj.children[i]);
  841.                 }
  842.         }
  843. }
  844.  
  845.  
  846. function showDialog(url, optValidate){
  847.         var sName;
  848.         var nIndex = url.indexOf(".");
  849.         if (nIndex<0){
  850.                 sName = url;
  851.                 url = url + ".htm";
  852.         }else{
  853.                 sName = url.substring(0, nIndex);
  854.         }
  855.         url = "dialog/" + url;
  856.         sName = sName.toLowerCase();
  857.         url = url.toLowerCase();
  858.  
  859.         if (optValidate) {
  860.                 if (!validateMode()) {return;}
  861.         }
  862.         eWebEditor.focus();
  863.         if (!history.saved){saveHistory();}
  864.         var arr = showModalDialog(url, window, "dialogWidth:0px;dialogHeight:0px;help:no;scroll:no;status:no");
  865.         saveHistory();
  866.         eWebEditor.focus();
  867. }
  868.  
  869.  
  870. function Maximize() {
  871.         if (!validateMode()) {return;}
  872.         saveHistory();
  873.         window.open("dialog/fullscreen.htm?style="+config.StyleName, 'FullScreen'+sLinkFieldName, 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,fullscreen=yes');
  874. }
  875.  
  876. function createLink(){
  877.         if (!validateMode()) {return;}
  878.        
  879.         if (eWebEditor.document.selection.type == "Control") {
  880.                 var oControlRange = eWebEditor.document.selection.createRange();
  881.                 if (oControlRange(0).tagName.toUpperCase() != "IMG") {
  882.                         alert("链接只能是图片或文本");
  883.                         return;
  884.                 }
  885.         }
  886.        
  887.         showDialog("hyperlink.htm", true);
  888. }
  889.  
  890. function HTMLEncode(text){
  891.         text = text.replace(/&/g, "&amp;") ;
  892.         text = text.replace(/"/g, "&quot;") ;
  893.         text = text.replace(/</g, "&lt;") ;
  894.         text = text.replace(/>/g, "&gt;") ;
  895.         text = text.replace(/\ /g,"&nbsp;");
  896.         text = text.replace(/\n/g,"<br>");
  897.         text = text.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");
  898.         return text;
  899. }
  900.  
  901. function insert(what) {
  902.         if (!validateMode()) {return;}
  903.         eWebEditor.focus();
  904.         saveHistory();
  905.         var sel = eWebEditor.document.selection.createRange();
  906.  
  907.         switch(what){
  908.         case "excel":
  909.                 insertHTML("<object classid='clsid:0002E510-0000-0000-C000-000000000046' id='Spreadsheet1' codebase='file:\\Bob\software\office2000\msowc.cab' width='100%' height='250'><param name='HTMLURL' value><param name='HTMLData' value='&lt;html xmlns:x=&quot;urn:schemas-microsoft-com:office:excel&quot;xmlns=&quot;http://www.w3.org/TR/REC-html40&quot;&gt;&lt;head&gt;&lt;style type=&quot;text/css&quot;&gt;&lt;!--tr{mso-height-source:auto;}td{black-space:nowrap;}.wc4590F88{black-space:nowrap;font-family:Verdana,Arial,Helvetica,sans-serif;mso-number-format:General;font-size:auto;font-weight:auto;font-style:auto;text-decoration:auto;mso-background-source:auto;mso-pattern:auto;mso-color-source:auto;text-align:general;vertical-align:bottom;border-top:none;border-left:none;border-right:none;border-bottom:none;mso-protection:locked;}--&gt;&lt;/style&gt;&lt;/head&gt;&lt;body&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;&lt;x:ExcelWorkbook&gt;&lt;x:ExcelWorksheets&gt;&lt;x:ExcelWorksheet&gt;&lt;x:OWCVersion&gt;9.0.0.2710&lt;/x:OWCVersion&gt;&lt;x:Label Style='border-top:solid .5pt silver;border-left:solid .5pt silver;border-right:solid .5pt silver;border-bottom:solid .5pt silver'&gt;&lt;x:Caption&gt;Microsoft Office Spreadsheet&lt;/x:Caption&gt; &lt;/x:Label&gt;&lt;x:Name&gt;Sheet1&lt;/x:Name&gt;&lt;x:WorksheetOptions&gt;&lt;x:Selected/&gt;&lt;x:Height&gt;7620&lt;/x:Height&gt;&lt;x:Width&gt;15240&lt;/x:Width&gt;&lt;x:TopRowVisible&gt;0&lt;/x:TopRowVisible&gt;&lt;x:LeftColumnVisible&gt;0&lt;/x:LeftColumnVisible&gt; &lt;x:ProtectContents&gt;False&lt;/x:ProtectContents&gt; &lt;x:DefaultRowHeight&gt;210&lt;/x:DefaultRowHeight&gt; &lt;x:StandardWidth&gt;2389&lt;/x:StandardWidth&gt; &lt;/x:WorksheetOptions&gt; &lt;/x:ExcelWorksheet&gt;&lt;/x:ExcelWorksheets&gt; &lt;x:MaxHeight&gt;80%&lt;/x:MaxHeight&gt;&lt;x:MaxWidth&gt;80%&lt;/x:MaxWidth&gt;&lt;/x:ExcelWorkbook&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;table class=wc4590F88 x:str&gt;&lt;col width=&quot;56&quot;&gt;&lt;tr height=&quot;14&quot;&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;'> <param name='DataType' value='HTMLDATA'> <param name='AutoFit' value='0'><param name='DisplayColHeaders' value='-1'><param name='DisplayGridlines' value='-1'><param name='DisplayHorizontalScrollBar' value='-1'><param name='DisplayRowHeaders' value='-1'><param name='DisplayTitleBar' value='-1'><param name='DisplayToolbar' value='-1'><param name='DisplayVerticalScrollBar' value='-1'> <param name='EnableAutoCalculate' value='-1'> <param name='EnableEvents' value='-1'><param name='MoveAfterReturn' value='-1'><param name='MoveAfterReturnDirection' value='0'><param name='RightToLeft' value='0'><param name='ViewableRange' value='1:65536'></object>");
  910.                 break;
  911.         case "nowdate":
  912.                 var d = new Date();
  913.                 insertHTML(d.toLocaleDateString());
  914.                 break;
  915.         case "nowtime":
  916.                 var d = new Date();
  917.                 insertHTML(d.toLocaleTimeString());
  918.                 break;
  919.         case "br":
  920.                 insertHTML("<br>")
  921.                 break;
  922.         case "code":
  923.                 insertHTML('<table width=95% border="0" align="Center" cellpadding="6" cellspacing="0" style="border: 1px Dotted #CCCCCC; TABLE-LAYOUT: fixed"><tr><td bgcolor=#FDFDDF style="WORD-WRAP: break-word"><font style="color: #990000;font-weight:bold">以下是代码片段:</font><br>'+HTMLEncode(sel.text)+'</td></tr></table>');
  924.                 break;
  925.         case "quote":
  926.                 insertHTML('<table width=95% border="0" align="Center" cellpadding="6" cellspacing="0" style="border: 1px Dotted #CCCCCC; TABLE-LAYOUT: fixed"><tr><td bgcolor=#F3F3F3 style="WORD-WRAP: break-word"><font style="color: #990000;font-weight:bold">以下是引用片段:</font><br>'+HTMLEncode(sel.text)+'</td></tr></table>');
  927.                 break;
  928.         case "big":
  929.                 insertHTML("<big>" + sel.text + "</big>");
  930.                 break;
  931.         case "small":
  932.                 insertHTML("<small>" + sel.text + "</small>");
  933.                 break;
  934.         default:
  935.                 alert("错误参数调用!");
  936.                 break;
  937.         }
  938.         sel=null;
  939. }
  940.  
  941. var borderShown = config.ShowBorder;
  942. function showBorders() {
  943.         if (!validateMode()) {return;}
  944.        
  945.         var allForms = eWebEditor.document.body.getElementsByTagName("FORM");
  946.         var allInputs = eWebEditor.document.body.getElementsByTagName("INPUT");
  947.         var allTables = eWebEditor.document.body.getElementsByTagName("TABLE");
  948.         var allLinks = eWebEditor.document.body.getElementsByTagName("A");
  949.  
  950.         // form
  951.         for (a=0; a < allForms.length; a++) {
  952.                 if (borderShown == "0") {
  953.                         allForms[a].runtimeStyle.border = "1px dotted #FF0000"
  954.                 } else {
  955.                         allForms[a].runtimeStyle.cssText = ""
  956.                 }
  957.         }
  958.  
  959.         // input
  960.         for (b=0; b < allInputs.length; b++) {
  961.                 if (borderShown == "0") {
  962.                         if (allInputs[b].type.toUpperCase() == "HIDDEN") {
  963.                                 allInputs[b].runtimeStyle.border = "1px dashed #000000"
  964.                                 allInputs[b].runtimeStyle.width = "15px"
  965.                                 allInputs[b].runtimeStyle.height = "15px"
  966.                                 allInputs[b].runtimeStyle.backgroundColor = "#FDADAD"
  967.                                 allInputs[b].runtimeStyle.color = "#FDADAD"
  968.                         }
  969.                 } else {
  970.                         if (allInputs[b].type.toUpperCase() == "HIDDEN")
  971.                                 allInputs[b].runtimeStyle.cssText = ""
  972.                 }
  973.         }
  974.  
  975.         // table
  976.         for (i=0; i < allTables.length; i++) {
  977.                         if (borderShown == "0") {
  978.                                 allTables[i].runtimeStyle.border = "1px dotted #BFBFBF"
  979.                         } else {
  980.                                 allTables[i].runtimeStyle.cssText = ""
  981.                         }
  982.  
  983.                         allRows = allTables[i].rows
  984.                         for (y=0; y < allRows.length; y++) {
  985.                                 allCellsInRow = allRows[y].cells
  986.                                         for (x=0; x < allCellsInRow.length; x++) {
  987.                                                 if (borderShown == "0") {
  988.                                                         allCellsInRow[x].runtimeStyle.border = "1px dotted #BFBFBF"
  989.                                                 } else {
  990.                                                         allCellsInRow[x].runtimeStyle.cssText = ""
  991.                                                 }
  992.                                         }
  993.                         }
  994.         }
  995.  
  996.         // A
  997.         for (a=0; a < allLinks.length; a++) {
  998.                 if (borderShown == "0") {
  999.                         if (allLinks[a].href.toUpperCase() == "") {
  1000.                                 allLinks[a].runtimeStyle.borderBottom = "1px dashed #000000"
  1001.                         }
  1002.                 } else {
  1003.                         allLinks[a].runtimeStyle.cssText = ""
  1004.                 }
  1005.         }
  1006.  
  1007.         if (borderShown == "0") {
  1008.                 borderShown = "1"
  1009.         } else {
  1010.                 borderShown = "0"
  1011.         }
  1012.  
  1013.         scrollUp()
  1014. }
  1015.  
  1016. function scrollUp() {
  1017.         eWebEditor.scrollBy(0,0);
  1018. }
  1019.  
  1020. var nCurrZoomSize = 100;
  1021. var aZoomSize = new Array(10, 25, 50, 75, 100, 150, 200, 500);
  1022. function doZoom(size) {
  1023.         eWebEditor.document.body.runtimeStyle.zoom = size + "%";
  1024.         nCurrZoomSize = size;
  1025. }
  1026.  
  1027. function findReplace(){
  1028.         showDialog('findreplace.htm', true)
  1029. }
  1030.  
  1031. function absolutePosition(){
  1032.         var objReference = null;
  1033.         var RangeType = eWebEditor.document.selection.type;
  1034.         if (RangeType != "Control") {return;}
  1035.         var selectedRange = eWebEditor.document.selection.createRange();
  1036.         for (var i=0; i<selectedRange.length; i++){
  1037.                 objReference = selectedRange.item(i);
  1038.                 if (objReference.style.position != 'relative') {
  1039.                         objReference.style.position='relative';
  1040.                 }else{
  1041.                         objReference.style.position='static';
  1042.                 }
  1043.         }
  1044. }
  1045.  
  1046. function zIndex(action){
  1047.         var objReference = null;
  1048.         var RangeType = eWebEditor.document.selection.type;
  1049.         if (RangeType != "Control") {return;}
  1050.         var selectedRange = eWebEditor.document.selection.createRange();
  1051.         for (var i=0; i<selectedRange.length; i++){
  1052.                 objReference = selectedRange.item(i);
  1053.                 if (action=='forward'){
  1054.                         objReference.style.zIndex  +=1;
  1055.                 }else{
  1056.                         objReference.style.zIndex  -=1;
  1057.                 }
  1058.                 objReference.style.position='relative';
  1059.         }
  1060. }
  1061.  
  1062. function isControlSelected(tag){
  1063.         if (tag){
  1064.                 if (eWebEditor.document.selection.type == "Control") {
  1065.                         var oControlRange = eWebEditor.document.selection.createRange();
  1066.                         if (oControlRange(0).tagName.toUpperCase() == tag) {
  1067.                                 return true;
  1068.                         }
  1069.                 }
  1070.         }
  1071.         return false;
  1072. }
  1073.  
  1074. function findParentElement(tag) {
  1075.         var el = null;
  1076.         if (eWebEditor.document.selection.type != "Control") {
  1077.                 el = eWebEditor.document.selection.createRange().parentElement();
  1078.                 while (el.tagName.toUpperCase() != tag){
  1079.                         el = el.parentElement;
  1080.                         if (el == null){
  1081.                 break;
  1082.                         }
  1083.                 }
  1084.         }
  1085.         return el;
  1086. }
  1087.  
  1088. function sizeChange(size){
  1089.         if (!BrowserInfo.IsIE55OrMore){
  1090.                 alert("此功能需要IE5.5版本以上的支持!");
  1091.                 return false;
  1092.         }
  1093.         for (var i=0; i<parent.frames.length; i++){
  1094.                 if (parent.frames[i].document==self.document){
  1095.                         var obj=parent.frames[i].frameElement;
  1096.                         var height = parseInt(obj.offsetHeight);
  1097.                         if (height+size>=300){
  1098.                                 obj.height=height+size;
  1099.                         }
  1100.                         break;
  1101.                 }
  1102.         }
  1103. }
  1104.  
  1105. function mapEdit(){
  1106.         if (!validateMode()) {return;}
  1107.        
  1108.         saveHistory();
  1109.         var b = false;
  1110.         if (eWebEditor.document.selection.type == "Control") {
  1111.                 var oControlRange = eWebEditor.document.selection.createRange();
  1112.                 if (oControlRange(0).tagName.toUpperCase() == "IMG") {
  1113.                         b = true;
  1114.                 }
  1115.         }
  1116.         if (!b){
  1117.                 alert("热点链接只能作用于图片");
  1118.                 return;
  1119.         }
  1120.  
  1121.         window.open("dialog/map.htm", "mapEdit"+sLinkFieldName, "toolbar=no,location=no,directories=no,status=not,menubar=no,scrollbars=no,resizable=yes,width=450,height=300");
  1122. }
  1123.  
  1124. function paragraphAttr(){
  1125.         if (!validateMode()) {return;}
  1126.         eWebEditor.focus();
  1127.  
  1128.         if (!tagInSelection("P")){
  1129.                 alert("段落属性只能应用于段落,请至少选择一个段落!");
  1130.                 return;
  1131.         }
  1132.  
  1133.         showDialog('paragraph.htm', true);
  1134. }
  1135.  
  1136.  
  1137. function tagInSelection(tag){
  1138.         var sel = eWebEditor.document.selection.createRange();
  1139.         sel.type = eWebEditor.document.selection.type;
  1140.         if (sel.type!="Control"){
  1141.                 var oBody = eWebEditor.document.body;
  1142.                 var aAllEl = oBody.getElementsByTagName(tag);
  1143.                 var aSelEl = new Array();
  1144.                 var oRngTemp = oBody.createTextRange();
  1145.  
  1146.                 for(var i=0;i<aAllEl.length;i++){
  1147.                         oRngTemp.moveToElementText(aAllEl(i));
  1148.                         if (sel.inRange(oRngTemp)){
  1149.                                 aSelEl[aSelEl.length] = aAllEl[i];
  1150.                         }else{
  1151.                                 if ( ((sel.compareEndPoints("StartToEnd",oRngTemp)<0)&&(sel.compareEndPoints("StartToStart",oRngTemp)>0)) || ((sel.compareEndPoints("EndToStart",oRngTemp)>0)&&(sel.compareEndPoints("EndToEnd",oRngTemp)<0)) ){
  1152.                                         aSelEl[aSelEl.length] = aAllEl[i];
  1153.                                 }
  1154.                         }
  1155.                 }
  1156.  
  1157.                 if (aSelEl.length>0){
  1158.                         return true;
  1159.                 }
  1160.                
  1161.         }
  1162.         return false;
  1163. }
  1164.  
  1165. function splitTextField(objField, html) {
  1166.         objField.value = html;
  1167.  
  1168.         if (config.ServerExt != "asp") {return;}
  1169.  
  1170.         var strFieldName = objField.name;
  1171.         var objForm = objField.form;
  1172.         var objDocument = objField.document;
  1173.         var FormLimit = 50000 ;
  1174.  
  1175.         for (var i=1;i<objDocument.getElementsByName(strFieldName).length;i++) {
  1176.                 objDocument.getElementsByName(strFieldName)[i].value = "";
  1177.         }
  1178.  
  1179.         if (html.length > FormLimit) {
  1180.                 objField.value = html.substr(0, FormLimit) ;
  1181.                 html = html.substr(FormLimit) ;
  1182.  
  1183.                 while (html.length > 0) {
  1184.                         var objTEXTAREA = objDocument.createElement("TEXTAREA") ;
  1185.                         objTEXTAREA.name = strFieldName ;
  1186.                         objTEXTAREA.style.display = "none" ;
  1187.                         objTEXTAREA.value = html.substr(0, FormLimit) ;
  1188.                         objForm.appendChild(objTEXTAREA) ;
  1189.  
  1190.                         html = html.substr(FormLimit) ;
  1191.                 }
  1192.         }
  1193. }
  1194.  
  1195.  
  1196. var history = new Object;
  1197. history.data = [];
  1198. history.position = 0;
  1199. history.bookmark = [];
  1200. history.saved = false;
  1201.  
  1202. function saveHistory() {
  1203.         history.saved = true;
  1204.         var html = getHTML();
  1205.         if (history.data[history.position] != html){
  1206.                 var nBeginLen = history.data.length;
  1207.                 var nPopLen = history.data.length - history.position;
  1208.                 for (var i=1; i<nPopLen; i++){
  1209.                         history.data.pop();
  1210.                         history.bookmark.pop();
  1211.                 }
  1212.  
  1213.                 history.data[history.data.length] = html;
  1214.  
  1215.                 if (eWebEditor.document.selection.type != "Control"){
  1216.                         try{
  1217.                                 history.bookmark[history.bookmark.length] = eWebEditor.document.selection.createRange().getBookmark();
  1218.                         }catch(e){
  1219.                                 history.bookmark[history.bookmark.length] = "";
  1220.                         }
  1221.                 } else {
  1222.                         var oRng = eWebEditor.document.selection.createRange();
  1223.                         var el = oRng.item(0);
  1224.                         history.bookmark[history.bookmark.length] = "[object]|" + el.tagName + "|" + getElementTagIndex(el);
  1225.                 }
  1226.  
  1227.                 if (nBeginLen!=0){
  1228.                         history.position++;
  1229.                 }
  1230.         }
  1231. }
  1232.  
  1233. function getElementTagIndex(el){
  1234.         var els = eWebEditor.document.body.getElementsByTagName(el.tagName);
  1235.         for (var i=0; i<els.length; i++){
  1236.                 if (els[i]==el){
  1237.                         return i;
  1238.                 }
  1239.         }
  1240.         return null;
  1241. }
  1242.  
  1243. function initHistory() {
  1244.         history.data.length = 0;
  1245.         history.bookmark.length = 0;
  1246.         history.position = 0;
  1247.         history.saved = false;
  1248. }
  1249.  
  1250. function goHistory(value) {
  1251.         if (!history.saved){saveHistory();}
  1252.        
  1253.         //eWebEditor.focus();
  1254.         // undo
  1255.         if (value == -1){
  1256.                 if (history.position > 0){
  1257.                         history.position = history.position - 1;
  1258.                         setHTML(history.data[history.position], true);
  1259.                         setHistoryCursor();
  1260.  
  1261.                 }
  1262.         // redo
  1263.         } else {
  1264.                 if (history.position < history.data.length -1){
  1265.                         history.position = history.position + 1;
  1266.                         setHTML(history.data[history.position], true);
  1267.                         setHistoryCursor();
  1268.                 }
  1269.         }
  1270.         eWebEditor.focus();
  1271. }
  1272.  
  1273. function setHistoryCursor() {
  1274.         var s_Bookmark = history.bookmark[history.position];
  1275.         if (s_Bookmark){
  1276.                 //eWebEditor_Toolbar.focus();
  1277.                 eWebEditor_Layout.focus();
  1278.                 if (s_Bookmark.substring(0,8) != "[object]"){
  1279.                         r = eWebEditor.document.body.createTextRange();
  1280.                         if (r.moveToBookmark(history.bookmark[history.position])){
  1281.                                 //r.duplicate();
  1282.                                 //r.collapse(false);
  1283.                                 r.select();
  1284.                         }
  1285.                 }else{
  1286.                         if (sCurrMode=="EDIT"){
  1287.                                 r = eWebEditor.document.body.createControlRange();
  1288.                                 var a = s_Bookmark.split("|");
  1289.                                 var els = eWebEditor.document.body.getElementsByTagName(a[1]);
  1290.                                 var el = els[a[2]];
  1291.                                 r.addElement(el);
  1292.                                 r.select();
  1293.                         }
  1294.                 }
  1295.         }
  1296. }
  1297.  
  1298. function getStyleEditorHeader(){
  1299.         if ((sCurrMode=="EDIT") || (sCurrMode=="VIEW")){
  1300.                 return config.StyleEditorHeader1 + sExtCSS + config.StyleEditorHeader2;
  1301.         }else{
  1302.                 return config.StyleEditorHeader1 + config.StyleEditorHeader2;
  1303.         }
  1304. }
  1305.  
  1306. // n_Type  -  0:en; 1:chs; 2:en+chs(1);3,en+chs(2)
  1307. function getCount(n_Type){
  1308.         var str=getText();
  1309.         str = str.replace(/\n/g,"");
  1310.         str = str.replace(/\r/g,"");
  1311.  
  1312.         var l=str.length;
  1313.         var n=0;
  1314.     for (var i=0;i<l;i++){
  1315.         if (str.charCodeAt(i)<0||str.charCodeAt(i)>255){
  1316.                         if (n_Type!=0){
  1317.                                 n++;
  1318.                                 if (n_Type==3){
  1319.                                         n++;
  1320.                                 }
  1321.                         }
  1322.                 }else{
  1323.                         if (n_Type!=1){
  1324.                                 n++;
  1325.                         }
  1326.                 }
  1327.     }
  1328.     return n;
  1329. }
  1330.  
  1331. function getText(){
  1332.         eWebEditor_Temp_HTML.innerHTML = getHTML();
  1333.         var s = eWebEditor_Temp_HTML.innerText;
  1334.         return s;
  1335. }
downloadeditor.js Source code - Download Pcook CMS bubble guest v3.0 SDCMS version Source code
Related Source Codes/Software:
Oo 126 CMS movie site system - This procedure ASP + ACC/ASP + SQL, using new kern... 2016-09-21
IDC sales web site - Beautiful IDC sales web site source code 2016-09-21
NPOINT virtual host v1.7.0 formal version management system - The system main function is introduced 2016-09-21
Classified information network business in suzhou - Overall module: classification of supply and deman... 2016-09-21
Jie Yang v0.6.3 article system - System functions: 1, the system settings A confi... 2016-09-21
Age design website information management system SDCMS v1.1 SP1 - SDCMS is designed to build the information managem... 2016-09-21
Age design website information management system SDCMS v1.1 SP1 - SDCMS is designed to build the information managem... 2016-09-21
C9 v2.1.1 static post system - Program USES ASP + ACC structure design and develo... 2016-09-21
Imitation green download station perfect version - Before increased | software home page, on the basi... 2016-09-21
Subdomain hosting edition v1.9 s taobao, pat - The background site admin 2016-09-21
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top