")+1); sBodyTag=s; //XHTML inside BODY tag var sBodyContent=recur(oEditor.document.body,""); //var sBodyContent= oEditor.document.body.innerHTML; if(sBodyContent.substr(0,4)=="
")sBodyContent=sBodyContent.substr(4);//remove
if it is added by lineBreak2() var idSource = document.getElementById("idSource").contentWindow; var sourceDocBody = idSource.document.body; //remove all child sourceDocBody.innerHTML = ""; sourceDocBody.innerHTML = sBodyContent; sourceDocBody.style.cssText="overflow-x:scroll;overflow-y:scroll;white-space:nowrap"; sourceDocBody.clearAttributes; sourceDocBody.style.marginTop='4'; sourceDocBody.style.marginLeft='10'; sourceDocBody.style.fontFamily='Tahoma'; sourceDocBody.style.fontSize='11px'; sourceDocBody.style.color='black'; sourceDocBody.style.background='white'; //idSource.document.addEventListener("keydown", new Function("doKeyPress(arguments[0])"), false); doWrap() idSource.document.designMode="on"; idSource.focus(); } function doKeyPress(evt) { /* if (evt.keyCode==13) { var thisSel = document.selection.createRange(); thisSel.pasteHTML('
'); evt.cancelBubble = true; evt.returnValue = false; thisSel.select(); thisSel.moveEnd("character", 1); thisSel.moveStart("character", 1); thisSel.collapse(false); return false; idSource.focus(); } if (evt.ctrlKey) { if(evt.keyCode==65)doCmd("SelectAll"); } */ } function doUpdate() { window.opener.oUtil.obj.saveForUndo(); var obj = window.opener.oUtil.obj; var oEditor=window.opener.oUtil.oEditor; var idSource = document.getElementById("idSource").contentWindow; var range = idSource.document.body.ownerDocument.createRange(); range.selectNodeContents(idSource.document.body); var sHTML = range.toString(); sHTML = sHTML.replace(/>\s+<"); //replace space between tag sHTML = sHTML.replace(/\r/gi, ""); //replace space between tag sHTML = sHTML.replace(/(
)\s+/gi, "$1"); //replace space between BR and text sHTML = sHTML.replace(/\s+(<)/gi, "$1"); //replace space between BR and text sHTML = sHTML.replace(/(>)\s+/gi, "$1"); //replace space between BR and text oEditor.document.body.innerHTML = obj.docType + sHTML; //var sBodyContent = idSource.document.body.innerText; //sHTML=obj.docType+sBaseHREF+sBodyHeader+sBodyTag+sBodyContent+""+sBodyFooter; //obj.putHTML(sHTML); } /************************ HTML to XHTML (formatted) ************************/ function lineBreak2(tag) //[0][1]text[2] { arrReturn = ["
","",""]; if( tag=="A"||tag=="B"||tag=="CITE"||tag=="CODE"||tag=="EM"|| tag=="FONT"||tag=="I"||tag=="SMALL"||tag=="STRIKE"||tag=="BIG"|| tag=="STRONG"||tag=="SUB"||tag=="SUP"||tag=="U"||tag=="SAMP"|| tag=="S"||tag=="VAR"||tag=="BASEFONT"||tag=="KBD"||tag=="TT") arrReturn=["","",""]; if( tag=="TEXTAREA"||tag=="TABLE"||tag=="THEAD"||tag=="TBODY"|| tag=="TR"||tag=="OL"||tag=="UL"||tag=="DIR"||tag=="MENU"|| tag=="FORM"||tag=="SELECT"||tag=="MAP"||tag=="DL"||tag=="HEAD"|| tag=="BODY"||tag=="HTML") arrReturn=["
","","
"]; if( tag=="STYLE"||tag=="SCRIPT") arrReturn=["
","",""]; if(tag=="BR"||tag=="HR") arrReturn=["","
",""]; return arrReturn; } function fixAttr(s) { s = String(s).replace(/&/g, "&amp;");//harus di awal s = String(s).replace(//g, "&gt;");//tdk apa2 s = String(s).replace(/"/g, "&quot;"); //s = String(s).replace(/'/g, "&apos;");//tdk apa2 return s; } function fixVal(s) { s = String(s).replace(/&/g, "&amp;");//harus di awal s = String(s).replace(//g, ">").replace(/'/g, "'").replace(/[\s+]/ig,"#_#"); return x}); s=s.replace(/<([^ >]*)/ig,function(x){return x.toLowerCase()}) s=s.replace(/ ([^=]+)=([^"' >]+)/ig," $1=\"$2\"");//new s=s.replace(/ ([^=]+)=/ig,function(x){return x.toLowerCase()}); s=s.replace(/#_#/ig," "); s=s.replace(/]*)>/ig,"\n").replace(/\/ \/>$/ig," \/>");//no closing tag if(sTagName=="EMBED") if(oNode.innerHTML=="") s=s.replace(/>$/ig," \/>").replace(/\/ \/>$/ig,"\/>");//no closing tag s=s.replace(//,"") //sSelThis="";//selThis //if(oElement==oNode)sSelThis=" selThis='selThis'" /*** format ***/ //selThis sHTML+=""+s+""; /**************/ } else if(sTagName=="TITLE") { //s=""+oNode.innerHTML+""; /*** format ***/ sHTML+="<<\/font>title"+ "><\/font>" + oNode.innerHTML + "</title"+ ">"; /**************/ } else { if(sTagName=="AREA") { var sCoords=oNode.coords; var sShape=oNode.shape; } var oNode2=oNode.cloneNode(false); s=window.opener.getOuterHTML(oNode2).replace(/<\/[^>]*>/,""); if(sTagName=="STYLE") { var arrTmp=s.match(/<[^>]*>/ig); s=arrTmp[0]; } s=s.replace(/\"[^\"]*\"/ig,function(x){ //x=x.replace(/&/g, "&").replace(//g, ">").replace(/'/g, "'").replace(/[\s+]/ig,"#_#"); x=x.replace(/&/g, "&").replace(//g, ">").replace(/[\s+]/ig,"#_#"); return x}); s=s.replace(/<([^ >]*)/ig,function(x){return x.toLowerCase()}) s=s.replace(/ ([^=]+)=([^" >]+)/ig," $1=\"$2\""); s=s.replace(/ ([^=]+)=/ig,function(x){return x.toLowerCase()}); s=s.replace(/#_#/ig," "); //single attribute s=s.replace(/[)/ig,"nowrap=\"nowrap\"\>"); s=s.replace(/ contenteditable=\"true\"/ig,""); if(sTagName=="AREA") { s=s.replace(/ coords=\"0,0,0,0\"/ig," coords=\""+sCoords+"\""); s=s.replace(/ shape=\"RECT\"/ig," shape=\""+sShape+"\""); } var bClosingTag=true; if(sTagName=="IMG"||sTagName=="BR"|| sTagName=="AREA"||sTagName=="HR"|| sTagName=="INPUT"||sTagName=="BASE"|| sTagName=="LINK"||sTagName=="META")//no closing tag { s=s.replace(/>$/ig," \/>").replace(/\/ \/>$/ig,"\/>");//no closing tag bClosingTag=false; } //sSelThis="";//selThis //if(oElement==oNode)sSelThis=" selThis='selThis'" /*** format ***/ //selThis //sA1="<<\/font>" sA1="<<\/font>" sA2="<\/font>" sA3="><\/font>" sA4="/><\/font>" s=s.replace(/<([^ >]*)([^ \/>]*)/ig,sA1+"$1"+sA2+"$2"); //s=s.replace(/\/>$/ig,sA4);//if there is no closing tag s=s.replace(/>$/ig,sA3); /**************/ sHTML+=s; if(!bClosingTag)sHTML+="";//selThis /*** tabs ***/ if(sTagName!="TEXTAREA")sHTML+= lineBreak2(sTagName)[1]; if(sTagName!="TEXTAREA")if(lineBreak2(sTagName)[1] !="") sHTML+= sT;//If new line, use base Tabs /************/ if(bClosingTag) { /*** CONTENT ***/ s=window.opener.getOuterHTML(oNode); if(sTagName=="SCRIPT") { s = s.replace(/]*)>[\n+\s+\t+]*/ig,"");//clean spaces s = s.replace(/[\n+\s+\t+]*<\/script>/ig,"<\/script>");//clean spaces s = s.replace(/]*)>\/\/<\/script>/ig,""); s = s.replace(/]*)>/ig,""); s = s.replace(/<\/script>/ig,""); s = s.replace(/^\s+/,'').replace(/\s+$/,''); /*** format ***/ sHTML+="
//<![CDATA["+s+"//]]>
"; /**************/ } if(sTagName=="STYLE") { s = s.replace(/]*)>[\n+\s+\t+]*/ig,"");//clean spaces s = s.replace(/[\n+\s+\t+]*<\/style>/ig,"<\/style>");//clean spaces s = s.replace(/]*)><\/style>/ig,""); s = s.replace(/]*)>/ig,""); s = s.replace(/<\/style>/ig,""); s = s.replace(/^\s+/,"").replace(/\s+$/,""); /*** format ***/ //sHTML+="
<!--"+s+"-->
"; /**************/ } if(sTagName=="DIV"||sTagName=="P") { if(oNode.innerHTML==""||oNode.innerHTML==" ") { sHTML+="&nbsp;"; } else sHTML+=recur(oNode,sT+"  "); } else { sHTML+=recur(oNode,sT+"  "); } /*** tabs ***/ if(sTagName!="TEXTAREA")sHTML+= lineBreak2(sTagName)[2]; if(sTagName!="TEXTAREA")if(lineBreak2(sTagName)[2] !="") sHTML+= sT;//If new line, use base Tabs /************/ /*** format ***/ //selThis sHTML+="</" + sTagName.toLowerCase() + ">"; /**************/ } } } else if(oNode.nodeType==3)//text { sHTML+= fixVal(oNode.nodeValue); } else if(oNode.nodeType==8) { if(window.opener.getOuterHTML(oNode).substring(0,2)=="<"+"%") {//server side script sTmp=(window.opener.getOuterHTML(oNode).substring(2)) sTmp=sTmp.substring(0,sTmp.length-2) sTmp=sTmp.replace(/^\s+/,"").replace(/\s+$/,""); sHTML+= "
<%"+sTmp+"%>
"; } else {//comments sTmp=oNode.nodeValue; sTmp = sTmp.replace(/^\s+/,"").replace(/\s+$/,""); sHTML+= "
<!--"+sTmp+"-->
"; } } else { ;//Not Processed } } return sHTML; } function doWrap() { var inpWrap = document.getElementById("inpWrap"); if(inpWrap.checked==true) { //Wrap Text idSource.document.body.style.whiteSpace="normal"; } else { idSource.document.body.style.whiteSpace="nowrap"; } } //******************* var buttonArrays=new Object(); function writeIconStandard(id,command,img,title) { var obj = window.opener.oUtil.obj; var w=obj.iconWidth; var h=obj.iconHeight; var imgPath=obj.iconPath+img; var sHTML=""+ ""+ ""+ "\""+title+"\""+ ""; sHTML=""+sHTML+"
"; buttonArrays[id] = ["inactive"]; return sHTML; } function writeBreakSpace() { var obj = window.opener.oUtil.obj; var w=obj.iconWidth; var h=obj.iconHeight; var imgPath=obj.iconPath+"brkspace.gif"; var sHTML=""+ ""+ ""; sHTML=""+sHTML+"
"; return sHTML; } function setupToolbar() { var obj = window.opener.oUtil.obj; var imgPath=obj.iconPath+"bg.gif"; var sHTMLIcons=""; sHTMLIcons+=writeIconStandard("btnUndo","doCmd('Undo')","btnUndo.gif",getText("Undo")); sHTMLIcons+=writeIconStandard("btnRedo","doCmd('Redo')","btnRedo.gif",getText("Redo")); sHTML=""+ "
"+ "
"+ sHTMLIcons+ "
"+ "
"; document.getElementById("idToolbar").innerHTML=sHTML; } function doOver(btn) { btnArr=buttonArrays[btn.id]; if(btnArr[0]=="inactive")btn.style.top=(-24+iconOffsetTop)+"px";//no.2 } function doDown(btn) { btnArr=buttonArrays[btn.id]; if(btnArr[0]!="disabled")btn.style.top=(-48+iconOffsetTop)+"px";//no.3 } var bCancel=false; function doOut(btn) { if(btn.style.top==((-48+iconOffsetTop)+"px")) { //lagi pushed tapi mouseout (cancel) bCancel=true; } btnArr=buttonArrays[btn.id]; if(btnArr[0]=="active")btn.style.top=(-72+iconOffsetTop)+"px";//no.4 (remain active/pushed) if(btnArr[0]=="inactive")btn.style.top=(0+iconOffsetTop)+"px";//no.1 (remain inactive) } function doUp(btn)//return true/false { if(bCancel) { //lagi pushed tapi mouseout (cancel) bCancel=false;btn.style.top=(0+iconOffsetTop)+"px"; return false; } btnArr=buttonArrays[btn.id]; if(btnArr[0]=="disabled") return false; btn.style.top=(-24+iconOffsetTop)+"px";//no.2 return true; } //******************* function modelessDialogShow(url,width,height) { window.showModelessDialog(url,window, "dialogWidth:"+width+"px;dialogHeight:"+height+"px;edge:Raised;center:1;help:0;resizable:1;"); }
  Wrap Text