// EDITOR PUBLIC (API) // POPUP (Link, table and image popup need to be worked on) function _CPopup_Init() { var sz = ""+ "
"+ ""+ ""+ ""+ ""+ ""+ ""+ "
"+ "
"+ ""; idPopup.document.open("text/html","replace"); idPopup.document.write(sz); idPopup.document.close(); } function _CPopup_InsertDatabound(eSelect) { if (eSelect.selectedIndex != 0) { var sElemName = eSelect.options[eSelect.selectedIndex].text; var iLen = sElemName.length sElemName = sElemName.replace(/"/g, '"') insertHTML('') eSelect.selectedIndex = 0; idEditbox.focus() } } function _CPopup_Hide() { document.all.idPopup.style.zIndex=-1 document.all.idPopup.style.visibility = "hidden" idPopup.document._type = "" idPopup.document.onkeydown=idPopup.document.onmouseover=idPopup.document.onclick = null idEditbox.focus() } function _CPopup_Show(szType) { var oRenderer, szCacheKey = "PopupRenderer." + szType if (idPopup.document._type == szType) _CPopup_Hide() else { document.all.idPopup.style.zIndex = -1 oRenderer = g_state.aCache[szCacheKey] if ((!oRenderer) || ("Link"==szType)) g_state.aCache[szCacheKey] = oRenderer = new _CPopupRenderer(szType) // Force Sizing document.all.idPopup.style.visibility = "" idPopup.document.all.puRegion.style.pixelHeight = idPopup.document.all.puRegion.style.pixelWidth = 100 idPopup.document._type = szType idPopup.document._renderer = oRenderer idPopup.document.all.caption.innerText = oRenderer.GetCaption() idPopup.document.all.content.innerHTML = oRenderer.GetHTML() idPopup.document.onkeydown = new Function("this._renderer.OnKeyDown()") idPopup.document.onmouseover = new Function("this._renderer.OnMouseOver()") idPopup.document.onclick = new Function("this._renderer.OnClick()") oRenderer.ResetContext(idPopup.document) setTimeout("_CPopupRenderer_Display('" + szType + "')",0) } } function _CPopupRenderer_Display(szType) { var oRenderer, szCacheKey = "PopupRenderer." + szType oRenderer = g_state.aCache[szCacheKey] if (oRenderer.autoSize) { idPopup.document.all.puRegion.style.pixelHeight = document.all.idPopup.style.pixelHeight = idPopup.document.all.puRegion.offsetHeight idPopup.document.all.puRegion.style.pixelWidth = document.all.idPopup.style.pixelWidth = idPopup.document.all.puRegion.offsetWidth + 50 document.all.idPopup.style.pixelLeft = (document.body.clientWidth - idPopup.document.all.puRegion.offsetWidth) / 2 } else { idPopup.document.all.puRegion.style.pixelHeight = document.all.idPopup.style.pixelHeight = document.body.clientHeight - idToolbar.offsetHeight- document.all.idMode.offsetHeight-20 idPopup.document.all.puRegion.style.pixelWidth = document.all.idPopup.style.pixelWidth = document.body.clientWidth - 50 document.all.idPopup.style.pixelLeft = 25 } document.all.idPopup.style.zIndex=2 idPopup.focus() } function _CPopupRenderer(szType) { this.szType = szType this.elCurrent = this.oDocument = null this.ResetContext = _CPopupRenderer_ResetContext this.GetCaption = _CPopupRenderer_GetCaption this.GetHTML = _CPopupRenderer_GetHTML this.autoSize = true this.OnMouseOver = new Function() this.OnKeyDown = _CListPopupRenderer_GenericOnKeyDown switch(szType) { case "formatblock": case "font": case "fontsize": this.OnMouseOver= _CListPopupRenderer_OnMouseOver this.OnKeyDown = _CListPopupRenderer_OnKeyDown case "BackColor": case "ForeColor": this.OnClick = _CListPopupRenderer_OnClick this.Highlight = _CListPopupRenderer_Highlight this.Select = _CListPopupRenderer_Select break default: this.OnClick = new Function() break } switch(szType) { case "formatblock": this.szCaption = L_PUTITLEPARAGRAPHSTYLE_TEXT this.PrepareHTML = _CFormatBlockPopupRenderer_PrepareHTML this.szHTML = this.PrepareHTML() break case "font": this.szCaption = L_PUTITLEFONTFACE_TEXT this.PrepareHTML = _CFontFacesPopupRenderer_PrepareHTML this.szHTML = this.PrepareHTML() break case "fontsize": this.szCaption = L_PUTITLEFONTSIZE_TEXT this.PrepareHTML =_CFontSizesPopupRenderer_PrepareHTML this.szHTML = this.PrepareHTML() break case "Link": this.szCaption = L_PUTITLELINK_TEXT this.PrepareHTML = _CLinkPopupRenderer_PrepareHTML this.szHTML = this.PrepareHTML() break case "Table": this.szCaption = L_PUTITLENEWTABLE_TEXT this.PrepareHTML = _CTablePopupRenderer_PrepareHTML this.szHTML = this.PrepareHTML() break case "Image": this.szCaption = L_PUTITLEIMAGE_TEXT this.PrepareHTML = _CImagePopupRenderer_PrepareHTML this.szHTML = this.PrepareHTML() this.autoSize = false break case "BackColor": this.szCaption = L_PUTITLEBGCOLOR_TEXT this.szHTML = "
" + _CUtil_BuildColorTable("") + "
" break case "ForeColor": this.szCaption = L_PUTITLETEXTCOLOR_TEXT this.szHTML = "
" + _CUtil_BuildColorTable("") + "
" break default: this.szCaption = "" break } } function _CPopupRenderer_ResetContext(oDoc) { this.oDocument = oDoc this.elCurrent = null if (this.szType=="Table") { var oSel = idEditbox.document.selection.createRange() var oBlock = (oSel.parentElement != null ? _CUtil_GetElement(oSel.parentElement(),"TABLE") : _CUtil_GetElement(oSel.item(0),"TABLE")) if (oBlock!=null) { oDoc.all.tabEdit.className="" oDoc.all.tabEditBodytxtPadding.value = oBlock.cellPadding oDoc.all.tabEditBodytxtSpacing.value = oBlock.cellSpacing oDoc.all.tabEditBodytxtBorder.value = oBlock.border oDoc.all.tabEditBodytxtBorderColor.value = oBlock.borderColor oDoc.all.tabEditBodytxtBackgroundImage.value = oBlock.background oDoc.all.tabEditBodytxtBackgroundColor.value = oBlock.bgColor } oDoc.elCurrent = oBlock } } function _CPopupRenderer_GetCaption() { return this.szCaption } function _CPopupRenderer_GetHTML() { return this.szHTML } function _CFontSizesPopupRenderer_PrepareHTML() { var sz = "" for (var i=1; i <= 7; i++) { sz += "" + "" + "" + "" } sz += "
" + "" + L_STYLESAMPLE_TEXT + "" + "
" return sz } function _CFontFacesPopupRenderer_PrepareHTML() { var sz = "" for (var i=0; i < defaultFonts.length; i++) { sz += "" + "" + "" + "" } // sz += "" sz += "
" + "" + "ABC abc 123" // + defaultFonts[i][1] + " " + (defaultFonts[i][2] ? ("(" + defaultFonts[i][1] + ")") : "") + "
" + L_CUSTOMFONT_TEXT + "
" return sz } function _CFontFacesPopupRenderer_InsertOther(el) { if (el._item=="custom") { el._item = "input" var sz = "" el.innerHTML = sz el.children[0].focus() } el.document.parentWindow.event.cancelBubble = true } function _CFormatBlockPopupRenderer_PrepareHTML() { var sz, defaultParagraphs = new Array() defaultParagraphs[0] = new Array("

", L_STYLENORMAL_TEXT) defaultParagraphs[1] = new Array("

", L_STYLEFORMATTED_TEXT)
for (var i=2; i <= 7; i++) 
defaultParagraphs[i] = new Array("", L_STYLEHEADING_TEXT + (i-1))	
sz = ""
for (var i=0; i < defaultParagraphs.length; i++) 
{
sz += ""
+ ""
+	""
}
sz += "
" + defaultParagraphs[i][0] + defaultParagraphs[i][1] + "" + "
" return sz } function _CTablePopupRenderer_PrepareHTMLPage(szID,bDisplay) { var sz="" + "" + "" + "" + "" + "" + "
" + "" + L_TABLEROWSANDCOLS_TEXT + "" + "
" + "" + L_TABLEPADDINGANDSPACING_TEXT + "" + "
" + "" + L_TABLEBORDERS_TEXT + "" + "
" + "" + L_TABLEBG_TEXT + "" + "
" + "
" + "" if (szID=="tabNewBody") { sz+= "
" + "

" + L_TABLEROWSANDCOLS_TEXT + "

" + "
" + L_TABLEINPUTROWS_TEXT + "" + "
" + L_TABLEINPUTCOLUMNS_TEXT + "" + "
" } else { sz+= "
" + "

" + L_TABLEROWSANDCOLS_TEXT + "

" + "

" + "
" + "

" } sz += "
" + "

" + L_TABLEPADDINGANDSPACING_TEXT + "

" + L_TABLEINPUTCELLPADDING_TEXT + "" + "
" + L_TABLEINPUTCELLSPACING_TEXT + "" + "
" + "
" + "

" + L_TABLEBORDERS_TEXT + "

" + L_TABLEINPUTBORDER_TEXT + "" + "
" + L_TABLEINPUTBORDERCOLOR_TEXT + "
" + _CUtil_BuildColorTable("idBorder"+szID, "", "parent._CTablePopupRenderer_ColorSelect(this,'" + szID + "txtBorderColor')") + "
" + "
" + "

" + L_TABLEBG_TEXT + "

" + L_TABLEINPUTBGIMGURL_TEXT + "" + "
" + L_TABLEINPUTBGCOLOR_TEXT + "
" + _CUtil_BuildColorTable("idBackground"+szID, "", "parent._CTablePopupRenderer_ColorSelect(this,'" + szID + "txtBackgroundColor')") + "
" + "
" if (szID=="tabNewBody") { sz += "" + " " } else { sz += "" + " " } sz+= "
" return sz } function _CTablePopupRenderer_PrepareHTML() { var sz = "" + "
New Table
Edit Table
 
" + _CTablePopupRenderer_PrepareHTMLPage("tabNewBody",true) + _CTablePopupRenderer_PrepareHTMLPage("tabEditBody",false) + "
" return sz } function _CTablePopupRenderer_Select(el,szID, id) { var d = el.document for (var i = 1; i < 5; i++) d.all[szID + "prop" + i].style.display = "none" d.all[szID + id].style.display = "" } function _CTablePopupRenderer_ColorSelect(el,id) { el.document.all[id].value = el.bgColor } function _CTablePopupRenderer_AddRow(el) { var elRow = el.document.elCurrent.insertRow() for (var i=0;i" for (var r=0; r < d.all[szID + "txtRows"].value; r++) { sz += "" for (var c=0; c < d.all[szID + "txtColumns"].value; c++) sz += " " sz += "" } sz += "" insertHTML(sz) } else if (d.elCurrent) { d.elCurrent.cellPadding = d.all.tabEditBodytxtPadding.value d.elCurrent.cellSpacing = d.all.tabEditBodytxtSpacing.value d.elCurrent.border = d.all.tabEditBodytxtBorder.value d.elCurrent.className = (d.elCurrent.border=="" || d.elCurrent.border==0) ? "NOBORDER" : "" d.elCurrent.borderColor = d.all.tabEditBodytxtBorderColor.value d.elCurrent.bgColor = d.all.tabEditBodytxtBackgroundColor.value d.elCurrent.background = d.all.tabEditBodytxtBackgroundImage.value } _CPopup_Hide() } function _CListPopupRenderer_OnClick() { var elTD = _CUtil_GetElement(this.oDocument.parentWindow.event.srcElement, "TD") if (elTD && elTD._item) this.Select(elTD) } function _CListPopupRenderer_GenericOnKeyDown() { var ev = this.oDocument.parentWindow.event if (ev.keyCode==27) _CPopup_Hide() } function _CListPopupRenderer_OnKeyDown() { var el var iRow = iCell = 0 var ev = this.oDocument.parentWindow.event var idList = this.oDocument.all.idList var elTR = _CUtil_GetElement(this.elCurrent,"TR") var elTD = _CUtil_GetElement(this.elCurrent,"TD") if (elTR != null) { iRow = elTR.rowIndex iCell = elTD.cellIndex } switch (ev.keyCode) { case 37: iCell-- if (iCell < 0) iCell = idList.rows[iRow].cells.length-1 break case 38: iRow-- if (iRow < 0) iRow = idList.rows.length-1 break case 39: iCell++ if (iCell > idList.rows[iRow].cells.length-1) iCell = 0 break case 40: iRow++ if (iRow > idList.rows.length-1) iRow = 0 break case 13: break; case 27: _CPopup_Hide() break; default: return; } el = idList.rows[iRow].cells[iCell] if (el && el._item) if (13 == ev.keyCode) { ev.keyCode=0 this.Select(el) } else this.Highlight(el) } function _CListPopupRenderer_OnMouseOver() { var el = _CUtil_GetElement(this.oDocument.parentWindow.event.srcElement, "TD") if (el && el._item && el != this.elCurrent) this.Highlight(el) } function _CListPopupRenderer_Highlight(el) { var elC = this.elCurrent if (elC) elC.style.borderWidth = elC.style.borderColor = elC.style.borderStyle = "" el.style.borderWidth = "1px" el.style.borderColor = "green" el.style.borderStyle = "solid" this.elCurrent = el } function _CListPopupRenderer_Select(elTD) { g_state.RestoreSelection() var el = elTD.children[0] switch (this.szType) { case "font": _Format("FontName",el.face) break case "fontsize": _Format("FontSize",el.size) break case "formatblock": _Format("FormatBlock","<" + el.tagName + ">") break case "ForeColor": _Format("ForeColor", elTD.bgColor) break case "BackColor": _Format("BackColor",elTD.bgColor) break } _CPopup_Hide() } function _CLinkPopupRenderer_AddLink(d) { var szURL = d.all.urlValue.value var szType = d.all.urlType[d.all.urlType.selectedIndex].text var oSel = g_state.GetSelection() var sType = oSel.type szURL = ((0 == szURL.indexOf("mailto:") || 0 == szURL.indexOf("http://") || 0 == szURL.indexOf("ftp://")) ? "" : szType) + szURL if (szURL!="") { if ((oSel.parentElement) && (oSel.text=="")) { oSel.expand("word") if (oSel.text=="") { var oStore = oSel.duplicate() if (d.all.pageList) { var idx = d.all.pageList.selectedIndex if (d.all.pageList[idx].value==szURL) oSel.text = d.all.pageList[idx].text else oSel.text = szURL } else oSel.text = szURL oSel.setEndPoint("StartToStart",oStore) } oSel.select() sType="Text" } if ((oSel.item) && (oSel.item(0).tagName=="IMG")) { oSel.item(0).width = oSel.item(0).offsetWidth oSel.item(0).height = oSel.item(0).offsetHeight oSel.item(0).border = (d.all.displayBorder.checked) ? 1 : "" } if (d.all.urlValue.value!="") oSel.execCommand("CreateLink",false,szURL) else oSel.execCommand("UnLink",false,szURL) } idEditbox.focus() } function _CLinkPopupRenderer__UpdateURL(oDoc,szURL) { var szType = szURL.substring(0,szURL.indexOf(":")) for (var i=0;i0) { sz += "" + "" + "" /* + L_LINKSELECT_TEXT + "" */ } var arTypes = new Array("","http","ftp","mailto") var arText = new Array("","http://","ftp://","mailto:") var szType = szURL.substring(0,szURL.indexOf(":")) if (("http"==szType) || ("ftp"==szType)) szURL = szURL.substring(szURL.indexOf("//")+2) else szURL = szURL.substring(szURL.indexOf(":")+1) sz += "" + "
" + L_LINKWEB_TEXT + "" if (bImg) { sz += "" + "
" + "" + L_LINKIMGBORDER_TEXT } sz += "" + "" + "" + "" + "" + " " + "" + "" + "" return sz } // UTIL function _CUtil_GetElement(oEl,sTag) { while (oEl!=null && oEl.tagName!=sTag) oEl = oEl.parentElement return oEl } function _CUtil_BuildColorTable(sID,fmt,szClick) { var sz, cPick = new Array("00","33","66","99","CC","FF"), iCnt=2 var iColors = cPick.length, szColor = "" sz = "
 
" + "" for (var r=0;r=0;g--) for (var b=iColors-1;b>=0;b--) { szColor = cPick[r]+cPick[g]+cPick[b] sz+=" " } sz+="" } sz+="
" return sz } function _CUtil_GetBlock(oEl) { var sBlocks = "|H1|H2|H3|H4|H5|H6|P|PRE|LI|TD|DIV|BLOCKQUOTE|DT|DD|TABLE|HR|IMG|" while ((oEl!=null) && (sBlocks.indexOf("|"+oEl.tagName+"|")==-1)) oEl = oEl.parentElement return oEl }