// ================================================================ // CHEditor 5 // ---------------------------------------------------------------- // Homepage: http://www.chcode.com // Copyright (c) 1997-2014 CHSOFT // ================================================================ var oEditor = null; var button = [ { alt : "", img : 'submit.gif', cmd : doSubmit }, { alt : "", img : 'cancel.gif', cmd : popupClose } ]; var colour = ["ffffcc","ffcc66","ff9900","ffcc99","ff6633","ffcccc","cc9999","ff6699","ff99cc","ff66cc","ffccff","cc99cc","cc66ff","cc99ff","9966cc","ccccff","9999cc","3333ff","6699ff","0066ff","99ccff","66ccff","99cccc","ccffff","99ffcc","66cc99","66ff99","99ff99","ccffcc","33ff33","66ff00","ccff99","99ff00","ccff66","cccc66","ffffff", "ffff99","ffcc00","ff9933","ff9966","cc3300","ff9999","cc6666","ff3366","ff3399","ff00cc","ff99ff","cc66cc","cc33ff","9933cc","9966ff","9999ff","6666ff","3300ff","3366ff","0066cc","3399ff","33ccff","66cccc","99ffff","66ffcc","33cc99","33ff99","66ff66","99cc99","00ff33","66ff33","99ff66","99ff33","ccff00","cccc33","cccccc", "ffff66","ffcc33","cc9966","ff6600","ff3300","ff6666","cc3333","ff0066","ff0099","ff33cc","ff66ff","cc00cc","cc00ff","9933ff","6600cc","6633ff","6666cc","3300cc","0000ff","3366cc","0099ff","00ccff","339999","66ffff","33ffcc","00cc99","00ff99","33ff66","66cc66","00ff00","33ff00","66cc00","99cc66","ccff33","999966","999999", "ffff33","cc9900","cc6600","cc6633","ff0000","ff3333","993333","cc3366","cc0066","cc6699","ff33ff","cc33cc","9900cc","9900ff","6633cc","6600ff","666699","3333cc","0000cc","0033ff","6699cc","3399cc","669999","33ffff","00ffcc","339966","33cc66","00ff66","669966","00cc00","33cc00","66cc33","99cc00","cccc99","999933","666666", "ffff00","cc9933","996633","993300","cc0000","ff0033","990033","996666","993366","cc0099","ff00ff","990099","996699","660099","663399","330099","333399","000099","0033cc","003399","336699","0099cc","006666","00ffff","33cccc","009966","00cc66","339933","336633","33cc33","339900","669933","99cc33","666633","999900","333333", "cccc00","996600","663300","660000","990000","cc0033","330000","663333","660033","990066","cc3399","993399","660066","663366","330033","330066","333366","000066","000033","003366","006699","003333","336666","00cccc","009999","006633","009933","006600","003300","00cc33","009900","336600","669900","333300","666600","000000"]; var none = '없음'; var modifyTable; var beforeHeaderType; var whichColor = null; function popupClose() { oEditor.popupWinCancel(); } function isError() { alert('표 정보를 얻을 수 없습니다. 수정하실 표을 다시 한 번 선택해 주십시오.'); popupClose(); } function init(dialog) { oEditor = this; oEditor.dialog = dialog; var dlg = new Dialog(oEditor); dlg.showButton(button); dlg.setDialogHeight(); var rng = oEditor.range, pNode; if (oEditor.W3CRange) { pNode = rng.commonAncestorContainer; if (!rng.collapsed && rng.startContainer === rng.endContainer && rng.startOffset - rng.endOffset < 2 && rng.startContainer.hasChildNodes()) { pNode = rng.startContainer.childNodes[rng.startOffset]; } while (pNode.nodeType === 3) { pNode = pNode.parentNode; } if (pNode.nodeName !== 'TD' && pNode.nodeName !== 'TH' && pNode.nodeName !== 'CAPTION' && pNode.nodeName !== 'TABLE') { isError(); return; } } else { if (rng.item) { pNode = rng.item(0); if (pNode.nodeName.toLowerCase() !== 'table') { isError(); return; } } else { pNode = rng.parentElement(); } } while (pNode && pNode.nodeName.toLowerCase() !== 'table') { pNode = pNode.parentNode; } if (pNode.nodeName.toLowerCase() !== 'table') { isError(); return; } modifyTable = pNode; var border, el_size, fm_size, el_type, fm_type, cellpd, cellsp, bgcolor, idbgcolor, bordercolor, idbordercolor, captionValue, summaryValue, caption, captionInput, summary; border = modifyTable.getAttribute('border'); if (!border || isNaN(border)) { border = parseInt(modifyTable.style.borderWidth, 10); if (!border) { border = 0; } } document.getElementById("bordersize").value = border; if (modifyTable.className !== '') { document.getElementById('cssClass').value = modifyTable.className; } if (modifyTable.id !== '') { document.getElementById('cssId').value = modifyTable.id; } el_size = modifyTable.getAttribute('width'); if (!el_size) { el_size = modifyTable.style.width; } fm_size = document.getElementById("width"); el_type = 'px'; fm_type = document.getElementById("widthtype"); if (el_size) { el_type = (/%$/.test(el_size)) ? '%' : 'px'; el_size = parseInt(el_size, 10); if (isNaN(el_size)) { el_size = ''; } } else { el_size = ''; } fm_size.value = el_size; fm_type.value = el_type; el_size = modifyTable.getAttribute('height'); if (!el_size) { el_size = modifyTable.style.height; } fm_size = document.getElementById("height"); el_type = 'px'; fm_type = document.getElementById("heighttype"); if (el_size) { el_type = (/\%$/.test(el_size)) ? '%' : 'px'; el_size = parseInt(el_size, 10); if (isNaN(el_size)) { el_size = ''; } } else { el_size = ''; } fm_size.value = el_size; fm_type.value = el_type; fm_type = modifyTable.getAttribute('align'); if (!fm_type) { fm_type = 'none'; } document.getElementById("talign").value = fm_type; cellpd = modifyTable.getAttribute('cellpadding'); if (isNaN(cellpd)) { cellpd = 0; } document.getElementById("cellpd").value = cellpd || 0; cellsp = modifyTable.getAttribute('cellspacing'); if (isNaN(cellsp)) { cellsp = 0; } document.getElementById("cellsp").value = cellsp || 0; bgcolor = modifyTable.getAttribute('bgcolor'); idbgcolor = document.getElementById("idbgcolor"); if (bgcolor) { if (/rgb/.test(bgcolor)) { bgcolor = oEditor.colorConvert(bgcolor, 'hex'); } idbgcolor.value = bgcolor.toLowerCase(); idbgcolor.style.backgroundColor = idbgcolor.value; } else { idbgcolor.value = none; } bordercolor = modifyTable.getAttribute('bordercolor'); if (!bordercolor) { bordercolor = modifyTable.style.borderColor; if (bordercolor) { bordercolor = oEditor.colorConvert(bordercolor, 'hex'); } else { bordercolor = null; } } idbordercolor = document.getElementById("idbordercolor"); if (bordercolor) { if (/rgb/.test(bordercolor)) { bordercolor = oEditor.colorConvert(bordercolor, 'hex'); } idbordercolor.value = bordercolor.toLowerCase(); idbordercolor.style.backgroundColor = idbordercolor.value; } else { idbordercolor.value = none; } caption = modifyTable.getElementsByTagName('caption')[0]; if (caption) { captionValue = oEditor.trimSpace(caption.innerHTML); if (captionValue !== '') { captionInput = document.getElementById('tableCaption'); captionInput.value = captionValue; if (caption.style.visibility === 'hidden') { document.getElementById('hideCaption').checked = 'checked'; } } } summaryValue = modifyTable.getAttribute('summary'); if (summaryValue) { summaryValue = oEditor.trimSpace(summaryValue); if (summaryValue !== '') { summary = document.getElementById('tableSummary'); summary.value = summaryValue; } } var tableHeader, rows, i, j, cells, headCol, headRow, rowLength, rowCellLength, cellLength, header, headTagName; headCol = headRow = null; headTagName = 'th'; tableHeader = document.getElementById('tableHeader'); rows = (modifyTable.rows && modifyTable.rows.length > 0) ? modifyTable.rows : modifyTable.getElementsByTagName('tr'); rowLength = rows.length; document.getElementById('numrows').appendChild(document.createTextNode(rowLength)); if (rowLength > 0) { cells = rows[0].cells; cellLength = cells.length; if (cellLength > 0) { for (j=0; j < cellLength; j++) { if (cells[j].tagName.toLowerCase() === headTagName) { headCol = 'col'; } else { headCol = null; break; } } } rowCellLength = 0; for (i=0; i < rowLength; i++) { headRow = (rows[i].cells[0] && rows[i].cells[0].tagName.toLowerCase() === headTagName) ? 'row' : null; if (rowCellLength < rows[i].cells.length) { rowCellLength = rows[i].cells.length; } } if (headRow && headCol && cellLength === 1) { headCol = null; } document.getElementById('numcols').appendChild(document.createTextNode(rowCellLength)); } header = (headCol && headRow) ? 'all' : headCol || headRow || 'none'; tableHeader.value = beforeHeaderType = header; } function getColor() { var color = this.bgColor; var input = document.getElementById("id"+whichColor); input.style.backgroundColor = input.value = color; } function drawColor() { var table, tr, td, insideTable, k = 0, i, j, tr2, td2; table = document.createElement('table'); table.cellPadding = 0; table.cellSpacing = 0; table.border = 0; table.align = 'center'; tr = table.insertRow(0); td = tr.insertCell(0); td.style.backgroundColor = '#fff'; insideTable = document.createElement('table'); insideTable.border = 0; insideTable.cellSpacing = 1; insideTable.cellPadding = 0; insideTable.align = 'center'; var onMouseOver = function() { this.className = 'colorCellMouseOver'; }; var onMouseOut = function() { this.className = 'colorCellMouseOut'; }; for (i = 0; i < 6; i++) { tr2 = insideTable.insertRow(i); for (j = 0; j < 36; j++) { td2 = tr2.insertCell(j); td2.setAttribute('bgColor', '#' + colour[k]); td2.className = 'colorCellMouseOut'; td2.onclick = getColor; td2.appendChild(document.createTextNode('\u00a0')); td2.onmouseover = onMouseOver; td2.onmouseout = onMouseOut; k++; } } td.appendChild(insideTable); document.getElementById('colorWrapper').appendChild(table); } function setColor(which) { whichColor = which; } function doSubmit() { var width, widthType, widthValue, cellWidth, i, j, row, rows, cell; width = document.getElementById("width"); widthType = document.getElementById("widthtype").value; if (width) { widthValue = parseInt(oEditor.trimSpace(width.value), 10); if (isNaN(widthValue)) { cellWidth = widthValue = null; } else { modifyTable.removeAttribute('width'); modifyTable.style.width = widthValue + widthType; rows = modifyTable.rows; if (rows.length > 0) { for (i=0; i < rows.length; i++) { row = rows[i]; for (j=0; j < row.cells.length; j++) { cellWidth = parseInt(widthValue/row.cells.length, 10) + widthType; cell = row.cells[j]; cell.setAttribute("width", cellWidth); } } } } } var height, heightValue; height = document.getElementById("height"); if (height) { heightValue = parseInt(oEditor.trimSpace(height.value), 10); if (isNaN(heightValue)) { heightValue = null; } else { heightValue += document.getElementById("heighttype").value; modifyTable.removeAttribute('height'); modifyTable.style.height = heightValue; } } var cellpadding, cellpaddingValue; cellpadding = document.getElementById("cellpd"); if (cellpadding) { cellpaddingValue = oEditor.trimSpace(cellpadding.value); if (!cellpaddingValue || isNaN(cellpaddingValue)) { cellpaddingValue = 0; } else { cellpaddingValue = parseInt(cellpaddingValue, 10); } modifyTable.setAttribute('cellpadding', cellpaddingValue); } var cellspacing, cellspacingValue; cellspacing = document.getElementById("cellsp"); if (cellspacing) { cellspacingValue = oEditor.trimSpace(cellspacing.value); if (!cellspacingValue || isNaN(cellspacingValue)) { cellspacingValue = 0; } else { cellspacingValue = parseInt(cellspacingValue, 10); } modifyTable.setAttribute('cellspacing', cellspacingValue); } var bgcolor, bgcolorValue; bgcolor = document.getElementById("idbgcolor"); if (bgcolor) { bgcolorValue = oEditor.trimSpace(bgcolor.value); if (bgcolorValue !== '' && bgcolorValue !== none) { modifyTable.removeAttribute('bgcolor'); modifyTable.bgColor = bgcolorValue; } } var align, alignValue; align = document.getElementById("talign"); if (align) { alignValue = align.value; if (alignValue !== 'none') { modifyTable.removeAttribute('align'); modifyTable.setAttribute('align', alignValue); } } var cssclass, cssclassValue, cssid, cssidValue; cssclass = document.getElementById('cssClass'); cssclassValue = oEditor.trimSpace(cssclass.value); if (cssclassValue !== '') { modifyTable.className = cssclassValue; } else { modifyTable.removeAttribute('class'); } cssid = document.getElementById('cssId'); cssidValue = oEditor.trimSpace(cssid.value); if (cssidValue !== '') { modifyTable.id = cssidValue; } else { modifyTable.removeAttribute('id'); } var caption = document.getElementById('tableCaption'); var captionValue = oEditor.trimSpace(caption.value); var summary = document.getElementById('tableSummary'); var summaryValue = oEditor.trimSpace(summary.value); var oCaption; if (summaryValue !== '') { modifyTable.setAttribute('summary', summaryValue); } if (captionValue !== '') { var hideCaption, tableCaption; tableCaption = modifyTable.createCaption(); tableCaption.innerHTML = captionValue; hideCaption = document.getElementById('hideCaption'); if (hideCaption.checked === true) { tableCaption.style.visibility = 'hidden'; tableCaption.style.overFlow = 'hidden'; tableCaption.style.lineHeight = '0px'; tableCaption.style.position = 'absolute'; tableCaption.style.display = 'none'; } else { tableCaption.removeAttribute('style'); } } else { oCaption = modifyTable.getElementsByTagName('caption')[0]; if (oCaption) { modifyTable.removeChild(oCaption); } } var copyAttribute = function(target, source) { var attr, attrValue, nodeName; attr = source.attributes; for (i=0; i= 0; j--) { row.deleteCell(j); } for (j=0; j < newCells.length; j++) { row.appendChild(newCells[j]); } if (newTagName === 'th') { oHead = modifyTable.getElementsByTagName('thead')[0]; if (!oHead) { oHead = document.createElement('thead'); modifyTable.insertBefore(oHead, modifyTable.firstChild); oHead.appendChild(row); } } else if (row.parentNode.nodeName.toLowerCase() === 'thead') { oHead = row.parentNode; if (rows[1]) { rows[1].parentNode.insertBefore(row, rows[1]); } else { modifyTable.insertBefore(row, oHead); } modifyTable.removeChild(oHead); } }; var replaceRow = function (rows, newTagName) { var len, newCell, sourceCell; len = rows.length; for (i=0; i < len; i++) { row = rows[i]; sourceCell = row.cells[0]; newCell = document.createElement(newTagName); if (newTagName === 'th') { newCell.setAttribute('scope', 'row'); } else { sourceCell.removeAttribute('scope'); } row.insertBefore(newCell, sourceCell); copyAttribute(newCell, sourceCell); copyChildNodes(newCell, sourceCell); row.deleteCell(1); } }; var border, borderValue; if (beforeHeaderType !== tableHeader) { rows = (modifyTable.rows && modifyTable.rows.length > 0) ? modifyTable.rows : modifyTable.getElementsByTagName('tr'); if (tableHeader === 'col') { replaceRow(rows, 'td'); replaceCol(rows, 'th'); } else if (tableHeader === 'row') { replaceCol(rows, 'td'); replaceRow(rows, 'th'); } else if (tableHeader === 'all') { replaceCol(rows, 'th'); replaceRow(rows, 'th'); } else if (tableHeader === 'none') { replaceCol(rows, 'td'); replaceRow(rows, 'td'); } oCaption = modifyTable.getElementsByTagName('caption')[0]; if (oCaption && oCaption !== modifyTable.firstChild) { modifyTable.insertBefore(oCaption, modifyTable.firstChild); } } border = document.getElementById("bordersize"); if (border) { borderValue = oEditor.trimSpace(border.value); if (isNaN(borderValue) === false) { var borderColor, borderColorValue; borderValue = parseInt(borderValue, 10); rows = (modifyTable.rows && modifyTable.rows.length > 0) ? modifyTable.rows : modifyTable.getElementsByTagName('tr'); if (borderValue) { borderColor = document.getElementById("idbordercolor"); if (borderColor) { borderColorValue = oEditor.trimSpace(borderColor.value); } if (!borderColorValue || borderColorValue === none) { borderColorValue = '#000000'; } borderColorValue = oEditor.colorConvert(borderColorValue, 'rgb'); modifyTable.style.border = borderValue + 'px solid ' + borderColorValue; modifyTable.style.borderCollapse = "collapse"; modifyTable.removeAttribute('border'); for (i=0; i < rows.length; i++) { row = rows[i]; for (j=0; j < row.cells.length; j++) { cell = row.cells[j]; cell.style.border = borderValue + 'px solid ' + borderColorValue; } } } else if (borderValue === 0) { modifyTable.removeAttribute('border'); modifyTable.style.border = ''; modifyTable.style.borderCollapse = ''; for (i=0; i < rows.length; i++) { row = rows[i]; for (j=0; j < row.cells.length; j++) { cell = row.cells[j]; cell.style.border = ''; } } } } } oEditor.editArea.focus(); oEditor.backupRange(oEditor.restoreRange()); oEditor.clearStoredSelections(); oEditor.popupWinClose(); }