123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640 |
- // ================================================================
- // 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<attr.length; i++) {
- nodeName = attr[i].nodeName;
- if (nodeName === 'style') {
- attrValue = source.getAttribute(nodeName);
- target.style.cssText = oEditor.undefined(attrValue.cssText) ? attrValue : attrValue.cssText;
- }
- else if (nodeName === 'class' || nodeName === 'id' || nodeName === 'nowrap' || nodeName === 'colspan' ||
- nodeName === 'rowspan' || nodeName === 'align')
- {
- attrValue = source.getAttribute(nodeName);
- if (attrValue) {
- target.setAttribute(nodeName, attrValue);
- }
- }
- }
- };
-
- var copyChildNodes = function (target, source) {
- var child;
- child = source.firstChild;
- while (child) {
- target.appendChild(child);
- child = source.firstChild;
- }
- };
-
- var tableHeader = document.getElementById('tableHeader').value;
- var replaceCol = function (rows, newTagName) {
- var cellLength, newCell, oldCell, newCells=[], oHead;
- row = rows[0];
- cellLength = row.cells.length;
-
- for (i=0; i < cellLength; i++) {
- oldCell = row.cells[i];
- newCell = document.createElement(newTagName);
- copyAttribute(newCell, oldCell);
- copyChildNodes(newCell, oldCell);
-
- if (newTagName === 'th') {
- newCell.setAttribute('scope', 'col');
- }
- else {
- newCell.removeAttribute('scope');
- }
-
- newCells.push(newCell);
- }
- for (j = cellLength-1; j >= 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();
- }
|