var cTD, cTR, cTA;
var isMSIE = navigator.userAgent.indexOf("MSIE") >= 0 ? true : false;

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function InsertTablePop() // 테이블생성
{
	EDITOR1.focus();
	var newTable = {};
	
	newTable = showModalDialog('../program/editor/SWE_lib/tbl_library.php', '', 'dialogHeight:270px; dialogWidth:280px; resizable:no; status:no');
	if(newTable == null) return;
	
	
	
	// 표(셀)안의 표 생성을 시도할 경우 처리 S
	if(cTD!=null) {
		
		if(newTable.tbl_width*1  > cTD.width*1 ) {
			if(!is_last_col(cTR.rowIndex,cTD.cellIndex)){
				newTable.tbl_width = cTD.width;
			} else {
				newTable.tbl_width = get_last_col_width();
			}
			//newTable.tbl_width  = (cTD.width)?cTD.width :cTD.offsetWidth;
		}
		
		if(newTable.tbl_height*1 > cTD.height*1) {
			if(!is_last_col(cTR.rowIndex,cTD.cellIndex)){
				newTable.tbl_height = cTD.height;
			} else {
				newTable.tbl_height = get_last_row_height();
			}
			//newTable.tbl_height  = (cTD.height)?cTD.height :cTD.offsetHheight;
		}
	}
	// 표(셀)안의 표 생성을 시도할 경우 처리 E
	var doc = document.getElementById("EDITOR1").contentWindow.document;
	var table = doc.createElement("table");

	// 새표 만들기 할경우 배경색 타입은 컬러
	if(newTable.border==2){
		table.border       = newTable.border;
		table.boarder2     = newTable.border;
		table.borderColor  = newTable.bdcolor;
		table.borderColor2 = newTable.bdcolor;
	} else if(newTable.border==1){
		table.style.borderCollapse = "collapse";
		table.border       = newTable.border;
		table.boarder2     = newTable.border;
		table.borderColor  = newTable.bdcolor;
		table.borderColor2 = newTable.bdcolor;
	} else { // 안보이는 테이블
		table.style.borderCollapse = "collapse";
		table.border       = 1;
		table.border2      = 0;
		table.borderColor  = "blue"; //안보이는 테이블의 보더는 파랑이다.
		table.borderColor2 = newTable.bdcolor;
		table.style.borderStyle = "dotted";
	}

	table.cellSpacing  = 0;
	table.cellPadding  = 0;
	
	if(newTable.apply_bgcolor=='y') {
		table.bgcolor    = newTable.bgcolor;
	} 
	
	var rows = newTable.rows;
	var cols = newTable.cols;
	
	table.width       = newTable.tbl_width*1;   
	table.height      = newTable.tbl_height *1; 
	
	table.align       = newTable.tblalign;

	var tbody = doc.createElement("tbody");


	table.appendChild(tbody);
	for (var i = 0; i < newTable.rows; ++i) {
		var tr = doc.createElement("tr");
		tbody.appendChild(tr);
		
		for (var j = 0; j < newTable.cols; ++j) {
			var td = doc.createElement("td");
			if(newTable.border ==0) {
				td.style.borderStyle = "dotted";
			} 
			
			if(j < newTable.cols - 1) {
				if(newTable.tbl_width=="" || newTable.tbl_width=="") newTable.tbl_width = 30;
				
				if(j>0){ // 첫 셀이 아니다.
					td.width  = newTable.tbl_width / newTable.cols - 1;
					td.rewi   = Math.floor(newTable.tbl_width / newTable.cols);
				} else { // 첫셀이다.
					td.width  = newTable.tbl_width / newTable.cols;
					td.rewi   = Math.floor(newTable.tbl_width / newTable.cols);
				}

			} else {
				td.width = newTable.tbl_width - Math.floor(newTable.tbl_width / newTable.cols) * (newTable.cols-1);
				
			}

			if(i < newTable.rows -1 ) {
				if(newTable.tbl_width=="" || newTable.tbl_width=="") newTable.tbl_width = 30;
				td.height = newTable.tbl_height / newTable.rows;
			} else {
				td.height = "";
			}
			tr.appendChild(td);
		}
	}
	
	cTA=table;
	
	if (isMSIE) {
		var range = document.getElementById("EDITOR1").document.selection.createRange();
		range.pasteHTML(table.outerHTML);
	} else {
		insertNodeAtSelection(document.getElementById("EDITOR1").contentWindow, table);
	}
} // insertpop

// -----------------------------------------------------------------------------------------------------------------------------------------------------------
function Table_MergeCellRight2()                                 // 우병합
{
    var ct = cTA;
    var cr = cTR;
    var cd = cTD;

    if (cd && cr && ct)
    {
      // get "real" cell position and form cell matrix
      var tm = Table_CellMatrix(ct);
      
      for (j=0; j<tm[cr.rowIndex].length; j++)
      {
        if (tm[cr.rowIndex][j] == cd.cellIndex)
        {
          realIndex=j;
          break;
        }
      }
      
      if (cd.cellIndex+1<cr.cells.length)
      {
        ccrs = cd.rowSpan?cd.rowSpan:1;
        cccs = cd.colSpan?cd.colSpan:1;
        ncrs = cr.cells(cd.cellIndex+1).rowSpan?cr.cells(cd.cellIndex+1).rowSpan:1;
        nccs = cr.cells(cd.cellIndex+1).colSpan?cr.cells(cd.cellIndex+1).colSpan:1;
        
        j=realIndex;
        while(tm[cr.rowIndex][j] == cd.cellIndex) j++;
        if (tm[cr.rowIndex][j] == cd.cellIndex+1)
        {
          if (ccrs == ncrs)
          {
            cd.colSpan = cccs+nccs;
            cd.innerHTML += cr.cells(cd.cellIndex+1).innerHTML;
            cr.deleteCell(cd.cellIndex+1);
          }
        }
      }
    }
    
		GetTableObject();
} // END OF : Table_MergeCellRight

// -----------------------------------------------------------------------------------------------------------------------------------------------------------
function Table_MergeCellRight() // 오른쪽 칸과 합친다.
{
    var ct = cTA;
    var cr = cTR;
    var cd = cTD;
		
		var i, nrow, ncol
		
    if (cd && cr && ct) { // get "real" cell position and form cell matrix
			CELL_INFO();
			tcell  = friend_cell(cr.rowIndex, cd.cellIndex);

			if(cd.cellIndex >= cr.cells.length-1) {
				alert("[1] 합치기불가(최우측셀) !!  ");
				return;
			}

      if(cd.rowSpan == "" || cd.rowSpan == null) {
      	b_rowspan = 1;
      } else {
      	b_rowspan = cd.rowSpan;
      }
			
			r1 = get_rowspan(cTA, cell_array[tcell.row][tcell.col].row, cell_array[tcell.row][tcell.col].col);
			r2 = get_rowspan(cTA, cell_array[tcell.row][tcell.col+1].row, cell_array[tcell.row][tcell.col+1].col);
			
			if(r1!=r2) {
					alert("[2] 합치기불가(구조상이) !!   ")
					return;
			}
			
			l_col  = friend_col_left(cr.rowIndex, cd.cellIndex);
			r_col  = friend_col_right(cr.rowIndex, cd.cellIndex+1);
			
			for(i=0; i<max_ri; i++) {
				ncol = cell_array[i][l_col].col
				nrow = cell_array[i][l_col].row

				ncol_r = cell_array[i][r_col].col
				nrow_r = cell_array[i][r_col].row

				n_l_col = friend_col_left(nrow, ncol);
				n_r_col = friend_col_right(nrow_r, ncol_r);
				
				if( (n_l_col != l_col || n_r_col != r_col) && (ncol!=ncol_r) ) {
					//alert("[3] 합치기불가(합치기후 구조 불안) !!  ")
					//return;
				}
			}
			
      ri = 0 
      if(cd.colSpan == "" || cd.colSpan == null) {
      	b_colspan = 1;
      } else {
      	b_colspan = cd.colSpan;
      }
      

      all_big   = 1;
			all_same  = 1;
			all_small = 1;
			
			
			//합치는쪽
			for(i=0; i<max_ri; i++) {
				nrow = cell_array[i][tcell.col].row
				ncol = cell_array[i][tcell.col].col
				
				nrow1 = cell_array[i][tcell.col+1].row
				ncol1 = cell_array[i][tcell.col+1].col
				
				if(ct.rows(nrow).cells(ncol).colSpan >= b_colspan && nrow!=cr.rowIndex) {
					all_small = 0;
				}
				
				if(ct.rows(nrow).cells(ncol).colSpan != b_colspan && nrow!=cr.rowIndex) {
					all_same = 0;
				}

				if(ct.rows(nrow).cells(ncol).colSpan <= b_colspan && nrow!=cr.rowIndex) {
					all_big = 0;
				}
			}
			
			// 합쳐지는 쪽 1
			if(cd.cellIndex+1<cr.cells.length-1){
				tcell0  = friend_cell(cr.rowIndex, cd.cellIndex  );
				tcell1  = friend_cell(cr.rowIndex, cd.cellIndex+1);
				
				if(tcell.col<max_ci-1) {
					nrow = cell_array[tcell.row][tcell.col].row
					ncol = cell_array[tcell.row][tcell.col].col
	
		      if(ct.rows(nrow).cells(ncol).colSpan == "" || ct.rows(nrow).cells(ncol).colSpan == null) {
		      	b_colspan = 1;
		      } else {
		      	b_colspan = ct.rows(nrow).cells(ncol).colSpan;
		      }
	
					for(i=0; i<max_ri; i++) {
						nrow = cell_array[i][tcell.col].row
						ncol = cell_array[i][tcell.col].col
						
						if(ct.rows(nrow).cells(ncol).colSpan >= b_colspan && nrow!=cr.rowIndex) {
							//all_small = 0;
						}
						
						if(ct.rows(nrow).cells(ncol).colSpan != b_colspan) {
							all_same = 0;
						}
		
						if(ct.rows(nrow).cells(ncol).colSpan <= b_colspan && nrow!=cr.rowIndex) {
							//all_big = 0;
						}
					}
				}
			}

			
			// 합쳐지는 쪽 2
			if(cd.cellIndex+2<cr.cells.length-1){
				tcell  = friend_cell(cr.rowIndex, cd.cellIndex+2);
				if(tcell.col<max_ci-1) {
					nrow = cell_array[tcell.row][tcell.col].row
					ncol = cell_array[tcell.row][tcell.col].col
	
		      if(ct.rows(nrow).cells(ncol).colSpan == "" || ct.rows(nrow).cells(ncol).colSpan == null) {
		      	b_colspan = 1;
		      } else {
		      	b_colspan = ct.rows(nrow).cells(ncol).colSpan;
		      }
	
					for(i=0; i<max_ri; i++) {
						nrow = cell_array[i][tcell.col].row
						ncol = cell_array[i][tcell.col].col
						
						if(ct.rows(nrow).cells(ncol).colSpan >= b_colspan && nrow!=cr.rowIndex) {
							//all_small = 0;
						}
						
						if(ct.rows(nrow).cells(ncol).colSpan != b_colspan) {
							
							all_same = 0;
						}
		
						if(ct.rows(nrow).cells(ncol).colSpan <= b_colspan && nrow!=cr.rowIndex) {
							//all_big = 0;
						}
					}
				}
			}
			
			
      // 왼쪽,오른쪽
      var good = 1;
      tcell = friend_cell(cr.rowIndex, cd.cellIndex);
      
      //왼쪽
      if(tcell.col > 0) {
    		ncol=cell_array[tcell.row][tcell.col-1].col
    		nrow=cell_array[tcell.row][tcell.col-1].row
      	
      	
	     	if(ct.rows(nrow).cells(ncol).colSpan == null || ct.rows(nrow).cells(ncol).colSpan == "") {
      		p_cs = 1
      	} else {
      		p_cs = ct.rows(nrow).cells(ncol).colSpan
      	}

      	for(i=0; i<max_ri; i++) {
      		ncol=cell_array[i][tcell.col-1].col
      		nrow=cell_array[i][tcell.col-1].row
      		
		     	if(ct.rows(nrow).cells(ncol).colSpan == null || ct.rows(nrow).cells(ncol).colSpan == "") {
	      		n_cs = 1
	      	} else {
	      		n_cs = ct.rows(nrow).cells(ncol).colSpan
	      	}
	      	if(n_cs != p_cs) {
	      		good = 0
	      		break;
	      	}
       	}
      } 

      // 오른쪽
      if(tcell.col < max_ci-1) {
    		ncol=cell_array[tcell.row][tcell.col+1].col
    		nrow=cell_array[tcell.row][tcell.col+1].row
      	
      	
	     	if(ct.rows(nrow).cells(ncol).colSpan == null || ct.rows(nrow).cells(ncol).colSpan == "") {
      		p_cs = 1
      	} else {
      		p_cs = ct.rows(nrow).cells(ncol).colSpan
      	}

      	for(i=0; i<max_ri; i++) {
      		ncol=cell_array[i][tcell.col+1].col
      		nrow=cell_array[i][tcell.col+1].row
      		
		     	if(ct.rows(nrow).cells(ncol).colSpan == null || ct.rows(nrow).cells(ncol).colSpan == "") {
	      		n_cs = 1
	      	} else {
	      		n_cs = ct.rows(nrow).cells(ncol).colSpan
	      	}
	      	if(n_cs != p_cs) {
	      		good = 0
	      		break;
	      	}
       	}
      } 


			//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
			// 우병합 형식 1 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      var prow = -1
      var pcol = -1

      if(all_same==1 || good==1) {
      	if(cr.cells(cd.cellIndex+1).width=="" || cr.cells(cd.cellIndex+1).width == null) {
      		cr.cells(cd.cellIndex).width = "";
      	} else {
      		if(cr.cells(cd.cellIndex).width!="" && cr.cells(cd.cellIndex).width != null) {
      			cr.cells(cd.cellIndex).rewi = cr.cells(cd.cellIndex).rewi*1 + cr.cells(cd.cellIndex+1).rewi*1;
      		}
      	}

      	
      	if(cr.cells(cd.cellIndex+1).colSpan == null || cr.cells(cd.cellIndex+1).colSpan == "") {
      		r_cs = 1
      	} else {
      		r_cs = cr.cells(cd.cellIndex+1).colSpan
      	}
      	
      	cr.deleteCell(cd.cellIndex+1);
      	if(cd.colSpan == null || cd.colSpan == "") {
      		cd.colSpan = 2;
      	} else {
      		cd.colSpan = cd.colSpan*1+r_cs;
      	}
	      return;
	    }
      

			//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
			// 우병합 형식 2 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      if(all_big==1) {
      	if(cr.cells(cd.cellIndex+1).width=="" || cr.cells(cd.cellIndex+1).width == null) {
      		cr.cells(cd.cellIndex).width = "";
      	} else {
      		
      		if(cr.cells(cd.cellIndex).width!="" && cr.cells(cd.cellIndex).width != null) {
      			cr.cells(cd.cellIndex).rewi = cr.cells(cd.cellIndex).rewi*1 + cr.cells(cd.cellIndex+1).rewi*1;
      		}
      	}
      	
      	cr.deleteCell(cd.cellIndex+1);
      	for(i=0; i<max_ri; i++) {
					nrow = cell_array[i][tcell.col].row
					ncol = cell_array[i][tcell.col].col
			
					if(nrow != prow || ncol != pcol) {
			  		if(ct.rows(nrow).cells(ncol).colSpan == null || ct.rows(nrow).cells(ncol).colSpan == ""){
			  			crcs = 1;
			  		} else {
			  			crcs = ct.rows(nrow).cells(ncol).colSpan;
			  		}
						if(nrow!=cr.rowIndex)
							ct.rows(nrow).cells(ncol).colSpan=crcs - 1
					}	
						
					prow = nrow;
					pcol = ncol;
				}
				
	      return;
	    }
      
			//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
			// 우병합 형식 3 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      var tm = Table_CellMatrix(ct);
      
      for (j=0; j<tm[cr.rowIndex].length; j++) {
      	if (tm[cr.rowIndex][j] == cd.cellIndex) {
        	realIndex=j;
          break;
        }
      }
      
      if (cd.cellIndex+1<cr.cells.length) {
        ccrs = cd.rowSpan?cd.rowSpan:1;
        cccs = cd.colSpan?cd.colSpan:1;
        ncrs = cr.cells(cd.cellIndex+1).rowSpan?cr.cells(cd.cellIndex+1).rowSpan:1;
        nccs = cr.cells(cd.cellIndex+1).colSpan?cr.cells(cd.cellIndex+1).colSpan:1;
        
        j=realIndex;
        
        while(tm[cr.rowIndex][j] == cd.cellIndex) j++;
        if (tm[cr.rowIndex][j] == cd.cellIndex+1) {
          if (ccrs == ncrs) {
          	if(cr.cells(cd.cellIndex+1).rewi*1>0) {
          		cr.cells(cd.cellIndex).rewi = cr.cells(cd.cellIndex).rewi*1 + cr.cells(cd.cellIndex+1).rewi*1;
          	} else {
          		cr.cells(cd.cellIndex).rewi = "";
          	}
          	
            cd.colSpan = cccs+nccs;
            cd.innerHTML += cr.cells(cd.cellIndex+1).innerHTML;
            
            cr.deleteCell(cd.cellIndex+1);
          }

          if(cd.cellIndex == cr.cells.length-1) {
          	cd.width = "";
          }
        }
      }
    }
    
		Table_GetObject();
} // END OF : Table_MergeCellRight
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function Table_MergeCellDown() // 아래셀과 합치기
{
    var ct = cTA;
    var cr = cTR;
    var cd = cTD;
    
		if (cd && cr && ct)
    {

			CELL_INFO();

			tcell = friend_cell(cr.rowIndex, cd.cellIndex);

			if(cr.rowIndex >= ct.rows.length-1) {
				alert("[1] 합치기불가(최하단셀) !!  ");
				return;
			}

			c1 = get_colspan(ct, cr.rowIndex, cd.cellIndex)
			
			r2 = cell_array[tcell.row+1][tcell.col].row;
			r3 = cell_array[tcell.row+1][tcell.col].col;
			
			c2 = get_colspan(ct, r2, r3)
			
			if(c1!=c2) {
				alert("[2] 합치기불가(구조상이) !!  ")
				return;
			}
			
			for(i=0; i<max_ci; i++) {
				ncol  = cell_array[tcell.row  ][i].col
				nrow  = cell_array[tcell.row  ][i].row
				                                   
				ncol2 = cell_array[tcell.row+1][i].col
				nrow2 = cell_array[tcell.row+1][i].row
				
				cs1 = get_rowspan(ct, nrow,  ncol) 
				cs2 = get_rowspan(ct, nrow2, ncol2)
				
				if(cs1!=cs2 && nrow!=nrow2 && ncol!=tcell.col && ncol2!=tcell.col) {
					//alert("[3] 합치기 불가(합치기후 구조 모호) !!   ");
					//return
				}
			}
			
			// 자신을 뺀 모든 컬럼의 rowspan이 자신보다 큰가를 체크
			var all_big = true;
			var p_row, p_col;
			
			o_rs = get_rowspan(ct, cr.rowIndex, cd.cellIndex);
			
			for ( i=0; i<max_ci; i++ ) {
				nrow = cell_array[tcell.row][i].row;
				ncol = cell_array[tcell.row][i].col;
				
				n_rs = get_rowspan(ct, nrow, ncol);
				
				if(tcell.col != i) {
					if(o_rs>=n_rs) {
						if(p_row!=nrow || p_col!=ncol)
							all_big = false;
					}
				}
				p_row = nrow;
				p_col = ncol;
			}
			
			
			if(all_big) { // ------------------------------------------- 좌우 모든 셀의 rowSpan이 현재 합치려는 셀보다 모두 클경우
				//alert('all big');
				var tmp_h1 = cd.height;
				var tmp_h2 = ct.rows(tcell.row+1).cells(0).height;
				
				ct.rows(tcell.row+1).deleteCell(0);
				
				for ( i=0; i<max_ci; i++ ) {
					nrow  = cell_array[tcell.row][i].row;
					ncol  = cell_array[tcell.row][i].col;
					
					nrow2 = cell_array[tcell.row+1][i].row;
					ncol2 = cell_array[tcell.row+1][i].col;
					
					n_rs = get_rowspan(ct, nrow, ncol);

					if(tcell.col != i && n_rs>1) {
						ct.rows(nrow).cells(ncol).rowSpan = n_rs - 1;
					}
				} // end of for
				
				ct.deleteRow(tcell.row+1);
				
				CELL_INFO();

				if(is_last_row(cr.rowIndex, cd.cellIndex) ) {
					cd.height = "";
				} else {
					cd.height = tmp_h1*1 + tmp_h2*1 ;
				}

				//Table_Cell_AutoSet_Size_Width();
				
				return;
				
			} // end of if(all_big) --------------------------------------------------------------------------------------------------------------------------
			//alert('hhhh');
      var tm = Table_CellMatrix(ct);
      	
      for (j=0; j<tm[cr.rowIndex].length; j++) {
        if (tm[cr.rowIndex][j] == cd.cellIndex) {
          crealIndex=j;
          break;
        }
      }
      
      ccrs = cd.rowSpan?cd.rowSpan:1;
      cccs = cd.colSpan?cd.colSpan:1;
     
      if (cr.rowIndex+ccrs<ct.rows.length) {
        ncellIndex = tm[cr.rowIndex+ccrs][crealIndex];
        if (ncellIndex != -1 && (crealIndex==0 || (crealIndex>0 && (tm[cr.rowIndex+ccrs][crealIndex-1]!=tm[cr.rowIndex+ccrs][crealIndex]))))   {
    
          ncrs = ct.rows(cr.rowIndex+ccrs).cells(ncellIndex).rowSpan?ct.rows(cr.rowIndex+ccrs).cells(ncellIndex).rowSpan:1;
          nccs = ct.rows(cr.rowIndex+ccrs).cells(ncellIndex).colSpan?ct.rows(cr.rowIndex+ccrs).cells(ncellIndex).colSpan:1;
          
          if (cccs == nccs) {
            cd.innerHTML += ct.rows(cr.rowIndex+ccrs).cells(ncellIndex).innerHTML;
            
            var tmp_h1=cd.height*1;
            var tmp_h2=ct.rows(cr.rowIndex+ccrs).cells(ncellIndex).height*1;
            
            ct.rows(cr.rowIndex+ccrs).deleteCell(ncellIndex);
            cd.rowSpan = ccrs+ncrs;
          }
        }
      }
      
      CELL_INFO();
      /*
      if(is_last_row(cr.rowIndex+1, cd.cellIndex) ) { // 마지막 열이다.
      	cd.height = "";
      } else {
      	cd.height = tmp_h1 + tmp_h2;
      }
      */
      
    } // END OF : if (cd && cr && ct)
		//Table_Cell_AutoSet_Size_Width();

} // END OF : Table_MergeCellDown

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function Table_SplitCellH()  // 나누기(줄,아래와 위로)
{
  var ct = cTA;
  var cr = cTR;
  var cd = cTD;
	var last_row;
	var i, j;
			
	if (cd && cr && ct) {
    var tm = Table_CellMatrix(ct);
		
    for(j=0; j<tm[cr.rowIndex].length; j++){
			if (tm[cr.rowIndex][j] == cd.cellIndex){
        realIndex=j;
        break;
      }
    }
    
    if(is_last_row(cr.rowIndex, cd.cellIndex)) {
    	last_row = true;
    } else {
    	last_row = false;
    }
    
    if (cd.rowSpan>1) { // -------------------------------------------- rowspan이 2 이상인 칸을 또 나눈다.
      var rs_tmp = cd.rowSpan;
      var rs_t1 = Math.floor(rs_tmp /2);
      var rs_t2 = rs_tmp - rs_t1;
			var oheight;
			
			oheight = cd.height;
      i = realIndex;
      while (tm[cr.rowIndex+rs_t1][i] == -1) i++;
      if (i == tm[cr.rowIndex+rs_t1].length) 
        ni = ct.rows(cr.rowIndex+rs_t1).cells.length;
      else
        ni = tm[cr.rowIndex+rs_t1][i];

      var newc = ct.rows(cr.rowIndex+rs_t1).insertCell(ni);
      
      cd.rowSpan = rs_t1;
      cd.height = "";
      cd.height = cd.offsetHeight;

      var nc = cd.cloneNode();
      
      nc.width = cd.width
      nc.rowSpan=rs_t2;
      
      if(last_row) {
      	newc.height = "";
      	nc.height="";
      } else {
				for(j=0; j<cr.cells.length; j++) {
					if(cr.cells(j).rowSpan == cd.rowSpan && j != cd.cellIndex) {
						cd.height = cr.cells(j).height;
						break;
					}
				}
				nc.height = oheight - cd.height ;
      }

      newc.replaceNode(nc);
      
      return;
      
    } else { // -----------------------------------------------------  rowspan이 1 인 칸을 나눈다.
    	var lastheight=0;
    	
    	if(is_last_row(cr.rowIndex, cd.cellIndex))
      	lastheight = get_last_row_height();
      
      ct.insertRow(cr.rowIndex+1);
      for (i=0; i<cr.cells.length; i++){
        if (i != cd.cellIndex) {
          rs = cr.cells(i).rowSpan>1?cr.cells(i).rowSpan:1;
          cr.cells(i).rowSpan = rs+1;
        }
      }

      for (i=0; i<cr.rowIndex; i++){
        var tempr = ct.rows(i);
        for (j=0; j<tempr.cells.length; j++) {
          if (tempr.cells(j).rowSpan > (cr.rowIndex - i))
            tempr.cells(j).rowSpan++;
        }
      }
      

      
      var newc = ct.rows(cr.rowIndex+1).insertCell(0);
      var nc = cd.cloneNode();
      
      
      nc.rewi = cd.rewi;
      newc.replaceNode(nc);
      
      if(!is_last_row(cr.rowIndex, cd.cellIndex)){
      	cd.height = cd.height / 2;
      	nc.height = cd.height;
      } else {
      	cd.height = lastheight / 2;
      	nc.height = "";
      }
      
      return;
    }
  }
} // splitH

function Table_SplitCellV() // 나누기 (칸,좌-우)
{
  var ct = cTA;
  var cr = cTR;
  var cd = cTD;
  var ocd_width;

  if (cd && cr && ct)
  {
			CELL_INFO();
			tcell = friend_cell(cr.rowIndex, cd.cellIndex);
			
      ri = 0 
      if(cd.colSpan == "" || cd.colSpan == null) {
      	b_colspan = 1;
      } else {
      	b_colspan = cd.colSpan;
      }

      all_big   = 1;
			all_same  = 1;
			all_small = 1;
			
			for(i=0; i<max_ri; i++) {
				nrow = cell_array[i][tcell.col].row
				ncol = cell_array[i][tcell.col].col
				
				if(ct.rows(nrow).cells(ncol).colSpan >= b_colspan && nrow!=cr.rowIndex) {
					all_small = 0;
				}
				
				if(ct.rows(nrow).cells(ncol).colSpan != b_colspan ) {
					all_same = 0;
				}

				if(ct.rows(nrow).cells(ncol).colSpan <= b_colspan && nrow!=cr.rowIndex) {
					all_big = 0;
				}
			}
			
    var tm = Table_CellMatrix(ct);
		var last_col=false;
		var last_row=false;
		
    for (j=0; j<tm[cr.rowIndex].length; j++) {
      if (tm[cr.rowIndex][j] == cd.cellIndex) {
        realIndex=j;
        break;
      }
    }
    
    if (cd.colSpan>1) { // --------------------------------------- 한칸 이상짜리를 나눈다.
    	//alert('cd.colSpan' + cd.colSpan);	
  		if(cd.width == null || cd.width == ""){
				ocd_width = get_last_col_width();
			} else {
				ocd_width = cd.rewi;
			}
			
			if(cd.cellIndex < ct.rows(cr.rowIndex).cells.length -1) {//마지막이 아니다.
				last_col = false;
			} else {
				last_col = true;
			}
			
      var newc   = ct.rows(cr.rowIndex).insertCell(cd.cellIndex+1);
      var cs_tmp = cd.colSpan;
      var cs_t1  = Math.floor(cs_tmp/2);
      var cs_t2  = cs_tmp - cs_t1;
			var prow = -1; pcol=-1;
			var nrow, ncol;
			
      cd.colSpan = cs_t1;
      var nc     = cd.cloneNode();
			nc.colSpan = cs_t2;

			
			
///////////////
			var tmp_col = 	friend_cell(cTR.rowIndex, cTD.cellIndex).col;
			var tmp_rewi_ok = false;

			for(i=0; i<max_ri-1; i++) {
				nrow = cell_array[i][tmp_col].row;
				ncol = cell_array[i][tmp_col].col;
				//alert("KK="+cTA.rows(nrow).cells(ncol).rewi + ", " + cTR.rowIndex + "," + nrow);
				if(prow!=nrow || pcol != ncol ) {
					if(cTA.rows(nrow).cells(ncol).colSpan == cd.colSpan && cTR.rowIndex != nrow) {
						cd.rewi = cTA.rows(nrow).cells(ncol).rewi;
						tmp_rewi_ok = true;
						break;
					}
				}
				prow = nrow;
				pcol = ncol;
			}
			
			if(!tmp_rewi_ok) {
				
				cd.width = "";
				if(is_first_col(cTR.rowIndex, cd.cellIndex)) {
					if(cd.colSpan>1) {
						cd.rewi = cd.offsetWidth;
					} else {
						cd.rewi = cd.offsetWidth;
					}
				} else {
					cd.rewi = cd.offsetWidth;
				}
			}
			
///////////////			
			
			if(!last_col) {                    // 나눠지기 전 셀이 마지막 컬럼이 아니다.
				nc.rewi = ocd_width*1 - cd.rewi*1;
//--
			} else {                           // 나눠지기 전 셀이 마지막 컬럼이다.
				//cd.rewi = Math.floor(ocd_width / cs_tmp * cs_t1) ;
				nc.rewi = "";
				if(cd.cellIndex < cr.cells.length-2) {
					//nc.rewi = ocd_width*1 - cd.rewi*1 ;
				} 
			}
			//alert('kk....2');
      newc.replaceNode(nc);
    } else  {  //------------------------------------------------------ 한칸짜리를 또 나눈다.
    	//alert('split left-right');
      var nc = cd.cloneNode();
			
		if(!is_last_col(cr.rowIndex, cd.cellIndex)) { // 마지막 셀이 아니다.
			
			if(cd.width == null || cd.width == "") {
				ocd_width = cd.offsetWidth;
			} else {
				ocd_width = cd.rewi;
			}
			
			cd.rewi = Math.floor(ocd_width / 2);
			nc.rewi = ocd_width*1 - cd.rewi*1;
			
		} else { // 마지막 셀이다
			if(cd.width == null || cd.width == ""){
				ocd_width = get_last_col_width();
			} else { // 0416 --S
				if(cd.rewi*1>0) {
					ocd_width = cd.rewi;
				} else {
					ocd_width = cd.width;
				}
				// 0416 --E
				
			}
			cd.rewi = Math.floor(ocd_width / 2);
		}
			
      var newc = ct.rows(cr.rowIndex).insertCell(cd.cellIndex+1);			
      newc.replaceNode(nc);
						      
      for (i=0; i<tm.length; i++)
      {
        if (i!=cr.rowIndex && tm[i][realIndex] != -1)
        {
          cs = ct.rows(i).cells(tm[i][realIndex]).colSpan>1?ct.rows(i).cells(tm[i][realIndex]).colSpan:1;
          ct.rows(i).cells(tm[i][realIndex]).colSpan = cs+1;
        }
      }
      
    }
  }
  
} // splitV


// -----------------------------------------------------------------------------------------------------------------------------------------------------------
function EDITOR1_onmouseup()
{
	GetTableObject();
}
function Table_GetObject()
{
	GetTableObject();
}
// -----------------------------------------------------------------------------------------------------------------------------------------------------------
function Table_CellMatrix(ct)
{
  var tm = new Array();
  for (i=0; i<ct.rows.length; i++)
    tm[i]=new Array();

  for (i=0; i<ct.rows.length; i++)
  {
    jr=0;
    for (j=0; j<ct.rows(i).cells.length;j++)
    {
      while (tm[i][jr] != undefined) 
        jr++;

      for (jh=jr; jh<jr+(ct.rows(i).cells(j).colSpan?ct.rows(i).cells(j).colSpan:1);jh++)
      {
        for (jv=i; jv<i+(ct.rows(i).cells(j).rowSpan?ct.rows(i).cells(j).rowSpan:1);jv++)
        {
          if (jv==i)
          {
            tm[jv][jh]=ct.rows(i).cells(j).cellIndex;
          }
          else
          {
            tm[jv][jh]=-1;
          }
        }
      }
    }
  }
  return(tm);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function get_colspan(tbl, row, col)
{
	//alert("get_colspan (row,col) = " + row +","+col);
	
	if(tbl.rows(row).cells(col).colSpan == "" || tbl.rows(row).cells(col).colSpan == null) {
		return 1
	} else {
		return tbl.rows(row).cells(col).colSpan * 1
	}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function get_rowspan(tbl, row, col)
{
	if(tbl.rows(row).cells(col).rowSpan == "" || tbl.rows(row).cells(col).rowSpan == null) {
		return 1
	} else {
		return tbl.rows(row).cells(col).rowSpan * 1
	}
}

// -----------------------------------------------------------------------------------------------------------------------------------------------------------
function GetTableObject()
{
	cTA = GetTable(); // 현재 선택된 테이블이 있다면 구한다.
  cTR = GetTR();    // 현재 선택된 테이블이 있다면 그것의 TR을 구한다.
  cTD = GetTD();    // 현재 선택된 테이블이 있다면 그것의 TD를 구한다.	
}
// -----------------------------------------------------------------------------------------------------------------------------------------------------------
function GetTD(editor)
{

  if (window.EDITOR1.document.selection.type != "Control")
  {
    var tControl = window.EDITOR1.document.selection.createRange();
    tControl = tControl.parentElement();

    while ((tControl.tagName != 'TD') && (tControl.tagName != 'TH') && (tControl.tagName != 'TABLE') && (tControl.tagName != 'BODY'))
    {

      tControl = tControl.parentElement;

    }
    if ((tControl.tagName == 'TD') || (tControl.tagName == 'TH'))
      return(tControl);
    else
      return(null);
  }
  else
  {
    return(null);
  }
}
  
// -----------------------------------------------------------------------------------------------------------------------------------------------------------
function GetTR(editor)
{
  if (EDITOR1.document.selection.type != "Control")
  {
    var tControl = EDITOR1.document.selection.createRange();
    tControl = tControl.parentElement();
    while ((tControl.tagName != 'TR') && (tControl.tagName != 'TABLE') && (tControl.tagName != 'BODY'))
    {
      tControl = tControl.parentElement;
    }
    if (tControl.tagName == 'TR')
      return(tControl);
    else
      return(null);
  }
  else
  {
    return(null);
  }
}
  
// -----------------------------------------------------------------------------------------------------------------------------------------------------------
// returns current table  
function GetTable()
{
  if (EDITOR1.document.selection.type == "Control")
  { 
    var tControl = EDITOR1.document.selection.createRange();
    if (tControl(0).tagName == 'TABLE')
      return(tControl(0));
    else
      return(null);
  }
  else
  {
    var tControl = EDITOR1.document.selection.createRange();
    tControl = tControl.parentElement();
    while ((tControl.tagName != 'TABLE') && (tControl.tagName != 'BODY'))
    {
      tControl = tControl.parentElement;
    }
    if (tControl.tagName == 'TABLE')
      return(tControl);
    else
      return(null);
  }
}

// -----------------------------------------------------------------------------------------------------------------------------------------------------------
function TablePropertyPop() // 테이블 속성 조정
{
	if(cTA==null){
		alert("선택하신 테이블이 없습니다. 먼저 테이블을 선택하십시오.");
		return;
	}
	var curTable = {};
	
	curTable.bdwidth   = cTA.border;
	
	if(cTA.border2==0) {
		curTable.bdwidth   = cTA.border2;
	} else {
		curTable.bdwidth   = cTA.border;
	}

	
	curTable.bgcolor   = cTA.bgColor;
	curTable.bgimage   = cTA.background;
	curTable.bdcolor   = cTA.borderColor;
	curTable.tblalign  = cTA.align;
	curTable.bg_align  = cTA.style.backgroundPosition;
	curTable.bg_repeat = cTA.style.backgroundRepeat;
	curTable.cellpd    = cTA.cellPadding;
	curTable.cellsp    = cTA.cellSpacing;
	curTable.width    = cTA.width;
	curTable.height    = cTA.height;
	
	var newTable = {};
	
	newTable = showModalDialog('program/editor/SWE_lib/tbl_property.php', curTable, 'dialogHeight:420px; dialogWidth:300px; resizable:no; status:no');	

	if (newTable == null) return;
	
	cTA.cellSpacing  = newTable.cellsp;
	cTA.cellPadding  = newTable.cellpd;
	
	cTA.width  = newTable.width;
	cTA.height = newTable.height;
	
	if(newTable.border){
		if(newTable.border==0) {
			cTA.border2      = 0;
			cTA.border       = 1;
			cTA.style.borderStyle = "dotted";
			cTA.borderColor  = "blue";
			cTA.style.borderCollapse = "collapse";
			
			var r_cnt = cTA.rows.length;
			
			for(var ii=0; ii < r_cnt; ii++) {
				c_cnt = cTA.rows(ii).cells.length;
				
				for(var jj=0; jj< c_cnt; jj++) {
					cTA.rows(ii).cells(jj).style.borderStyle = "dotted";
				}
			}

		} else if(newTable.border==1) {
			cTA.border2 = 1;
			cTA.border = 1;
			cTA.style.borderCollapse = "collapse";
			cTA.style.removeAttribute("borderStyle");
			cTA.style.removeAttribute("borderTopStyle");
			cTA.style.removeAttribute("borderLeftStyle");
			cTA.style.removeAttribute("borderRightStyle");
			cTA.style.removeAttribute("borderBottomStyle");
			cTA.style.removeAttribute("border2");
			cTA.borderColor  = newTable.bdcolor;
			
			var r_cnt = cTA.rows.length;
			
			for(var ii=0; ii < r_cnt; ii++) {
				c_cnt = cTA.rows(ii).cells.length;
				
				for(var jj=0; jj< c_cnt; jj++) {
					cTA.rows(ii).cells(jj).style.removeAttribute("borderStyle");
					cTA.rows(ii).cells(jj).style.removeAttribute("borderLeftStyle");
					cTA.rows(ii).cells(jj).style.removeAttribute("borderRightStyle");
					cTA.rows(ii).cells(jj).style.removeAttribute("borderBottomStyle");
					cTA.rows(ii).cells(jj).style.removeAttribute("borderTopStyle");
					
				}
			}
		} else {
			cTA.border2      = newTable.border ;
			cTA.border       = newTable.border ;
			cTA.borderColor  = newTable.bdcolor;
		}
	}
	
	if(newTable.bg_type == "c") {
		cTA.bgColor     = newTable.bgcolor;
		cTA.removeAttribute("Backgournd");
	} else if(newTable.bg_type == "i") {
		cTA.background = newTable.bgimage;
		cTA.style.backgroundRepeat = newTable.bg_repeat;
		cTA.style.backgroundPosition = newTable.bg_align
		cTA.removeAttribute("bgColor");
	}
	
	cTA.align       = newTable.tblalign;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function TD_PropertyPop() // 셀 속성 조정
{
	if(cTD==null){
		alert("먼저 셀을 선택하십시오.");
		return;
	}
	
	var curTD = {};

	curTD.align      = cTD.align;
	curTD.valign     = cTD.vAlign;
	curTD.bgColor    = cTD.bgColor;
	curTD.background = cTD.background;
	curTD.bg_align   = cTD.style.backgroundPosition;
	curTD.bg_repeat  = cTD.style.backgroundRepeat;
	
	curTD.width      = cTD.width;
	curTD.height     = cTD.height;
	
	curTD.line_ht    = replaceIT(cTD.style.lineHeight, "%", "");
	
	var newTD = {};
	newTD = showModalDialog('program/editor/SWE_lib/td_property.php', curTD, 'dialogHeight:420px; dialogWidth:300px; resizable:no; status:no');	
	
	if (newTD == null) return;

	if(newTD.bg_type=="c") {
		cTD.bgColor = newTD.bgcolor;
		cTD.removeAttribute("Background");
		cTD.removeAttribute("background");
		
	} else {
		cTD.bgColor = "";
		cTD.background = newTD.bgimage;
		cTD.style.backgroundRepeat   = newTD.bg_repeat;
		cTD.style.backgroundPosition = newTD.bg_align;
		cTD.removeAttribute("bgColor");
	}

	if(newTD.line_ht != "" && newTD.line_ht*1 != 0) {
		cTD.style.lineHeight = newTD.line_ht+"%";
	}
	
	cTD.align  = newTD.align;
	cTD.vAlign = newTD.valign;
	
	cTD.width  = newTD.width;
	cTD.height = newTD.height;
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
var cell_array;
var max_ri, max_ci;

// 단위셀 구조체
function ACELL(row, col)
{
	this.col = col
	this.row = row
}

function CELL_INFO()
{
	var i, j
	if(cTA!=null) {
		// 1. get max rowindex
		max_ri = cTA.rows.length
		
		// 2. get max colindex
		
		max_ci = 0;
		var temp = 0
		for(i=0; i<max_ri; i++) {
			temp = 0
			for(j=0; j<cTA.rows(i).cells.length; j++) {
				temp += get_colspan(cTA, i,j)
			}
			
			if(max_ci<temp) {
				max_ci = temp
			}
		}

		// 3. build cell array
		var CI = new Array()
		for(i=0; i<max_ri; i++)
			CI[i] = new Array();
			
		for(i=0; i<max_ri; i++) {
			lc = 0
			for(j=0; j<cTA.rows(i).cells.length; j++) {
				while(CI[i][lc]!=undefined )
					lc++;
					
				for(k=lc; k<lc+(cTA.rows(i).cells(j).colSpan?cTA.rows(i).cells(j).colSpan:1); k++) {
					for(l=i; l<i+(cTA.rows(i).cells(j).rowSpan?cTA.rows(i).cells(j).rowSpan:1); l++) {
						ac = new ACELL(i,j)
						CI[l][k] = ac;
					}
				}
			}  
		}
		cell_array = CI;
		
		// 테이블 사이즈의 재계산 S ----------------------------------------------- 11/10
		//alert('re size');
		/***********
		if(cTA.omc != "" && cTA.omc != null) {
			var off_mc = max_ci*1 - cTA.omc*1;
			if(off_mc != 0) {
				cTA.width = cTA.width*1 + off_mc;
				cTA.omc   = max_ci
				cTA.ow    = cTA.width
			}
		} else {
			cTA.omc = max_ci;
			cTA.ow  = cTA.width;
		}
		
		if(cTA.omr != "" && cTA.omr != null) {
			var off_mr = max_ri*1 - cTA.omr*1;    
			if(off_mr != 0) {
				cTA.height = cTA.height*1 + off_mr;
				cTA.omr    = max_ri;
				cTA.oh     = cTA.height
			}
		} else {
			cTA.omr = max_ri;
			cTA.oh  = cTA.height;
		}
		***********/
		// 테이블 사이즈의 재계산 S ----------------------------------------------- 11/10
	}
	
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function friend_cell(row,col)
{
	for(i=0 ; i<max_ri; i++){
		for(j=0 ; j<max_ci; j++){
			if(cell_array[i][j].row == row && cell_array[i][j].col == col) {
				var ret = new ACELL(i,j)
				return ret;
			}
		}
	}
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function friend_cell_for_size(row,col)
{
	var i,j
	var col_span_off = cTA.rows(row).cells(col).colSpan?cTA.rows(row).cells(col).colSpan*1:1;
	var row_span_off = cTA.rows(row).cells(col).rowSpan?cTA.rows(row).cells(col).rowSpan*1:1;
	
	
	col_span_off-- ;
	row_span_off-- ;

	for(i=0 ; i<max_ri; i++){
		for(j=0 ; j<max_ci; j++){
			if(cell_array[i][j].row == row && cell_array[i][j].col == col) {
				var ret = new ACELL(i+row_span_off, j+col_span_off)
				return ret;
			}
		}
	}
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function friend_col_left(row,col)
{
	return friend_cell(row,col).col
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function friend_col_right(row,col)
{
	return friend_cell_for_size(row,col).col
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function friend_row_top(row, col)
{
	return friend_cell(row,col).row
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function friend_row_bottom(row, col)
{
	return friend_cell_for_size(row,col).row
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function row_in_table(row, col)
{
	return cell_array[row][col].row;
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function col_in_table(row, col)
{
	return cell_array[row][col].col;
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function is_last_col(row,col) 
{ // 이 함수를 호출하기 전에는 CELL_INFO()가 선행되어야 함.
	var i
	
	for(i=0; i<max_ri  ; i++ ) {
		if(cell_array[i][max_ci-1].row == row && cell_array[i][max_ci-1].col == col) {
			//alert('last');
			return true;
		}
	}

	return false;
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function is_first_col(row,col) 
{ // 이 함수를 호출하기 전에는 CELL_INFO()가 선행되어야 함.
	var i
	
	for(i=0; i<max_ri  ; i++ ) {
		if(cell_array[i][0].row == row && cell_array[i][0].col == col) {
			return true;
		}
	}

	return false;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function is_last_col_old(row,col)  // 셀어레이에서의 마지막인지 판단.
{ // 이 함수를 호출하기 전에는 CELL_INFO()가 선행되어야 함.
	var tcol = friend_col_right(row,col)
	//alert("row, col, tcol, max_ci =" + row + ", " + col + ", " + tcol + ", " + max_ci);
	if(tcol < max_ci-1) {
		return false;
	} else {
		return true;
	}	
}
function is_last_row(row,col) 
{ // 이 함수를 호출하기 전에는 CELL_INFO()가 선행되어야 함.
	var i
	for(i=0; i<max_ci  ; i++) {
		if(cell_array[max_ri-1][i].row == row && cell_array[max_ri-1][i].col == col) {
			return true;
		}
	}
	return false;	
	
		
		
	//---
	var i
	for(i=0; i<max_ci  ; i++) {
		if(cell_array[max_ri-1][i].row <= row && cell_array[max_ri-1][i].col == col) {
			return true;
		}
	}
	return false;
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function Pre_Save_Processing() // preProcessing before save, show html code
{
/*
  if (!JCAN_EDIT) {
  	return;
	}
	*/
	/*
	if(table_preview_mode) {
		change_table_view_mode();	
	}
	*/
	EDITOR1.focus();
		
	var doc = document.getElementById("EDITOR1").contentWindow.document.all;
	
	var ctl_cnt = doc.length;
	var td_cnt ;
	var ii, jj, i, j;
	for(i=0; i<ctl_cnt; i++) {
		
		if(doc(i).tagName=="TABLE") {
			// - 선의 처리
			if(doc(i).border2 == 0) { // 안보이는 테이블
				doc(i).border = 0;
				doc(i).removeAttribute("border2");
				doc(i).borderColor = doc(i).borderColor2;
				doc(i).removeAttribute("borderColor");
				doc(i).removeAttribute("borderColor2");
				doc(i).style.removeAttribute("borderStyle");
				doc(i).style.removeAttribute("borderLeftStyle");
				doc(i).style.removeAttribute("borderRightStyle");
				doc(i).style.removeAttribute("borderBottomStyle");
				doc(i).style.removeAttribute("borderTopStyle");
			}
			
			var r_cnt = doc(i).rows.length;
			for(ii=0; ii < r_cnt; ii++) {
				c_cnt = doc(i).rows(ii).cells.length;
				
				for(jj=0; jj< c_cnt; jj++) {
					doc(i).rows(ii).cells(jj).style.removeAttribute("borderStyle");
					doc(i).rows(ii).cells(jj).style.removeAttribute("borderLeftStyle");
					doc(i).rows(ii).cells(jj).style.removeAttribute("borderRightStyle");
					doc(i).rows(ii).cells(jj).style.removeAttribute("borderBottomStyle");
					doc(i).rows(ii).cells(jj).style.removeAttribute("borderTopStyle");
				}
			}
			
			//----------------------------------------
			doc(i).style.removeAttribute("width");
			doc(i).style.removeAttribute("height");
			//----------------------------------------

		//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
		}
	}
	
	doc = document.getElementById("EDITOR1").contentWindow.document.all;
	ctl_cnt = doc.length;
}

function Pre_Edit_Processing() // preProcessing before show html editor
{
	EDITOR1.focus();
	var HTMLSOURCE = new String;
	
	HTMLSOURCE = EDITOR1.document.body.innerHTML;
	
	EDITOR1.document.body.innerHTML = HTMLSOURCE;
	
	setTimeout("Pre_Edit_Processing1()",2000);
}

function Pre_Edit_Processing1() // preProcessing before show html editor
{
	var doc = document.getElementById("EDITOR1").contentWindow.document.all;
	var ctl_cnt = doc.length;
	
	for(var i=0; i<ctl_cnt; i++) {
		if(doc(i).tagName=="TABLE") {
			if(doc(i).border*1==0 || doc(i).border == null) { // 안보이는 테이블이
				doc(i).border2 = 0;
				doc(i).border  = 1;
				doc(i).borderColor = "blue";
			  
				doc(i).cellSpacing = 0;
				doc(i).cellPadding = 0;
				doc(i).style.borderCollapse = "collapse";
				doc(i).style.borderStyle = "dotted";
				
				cTA = doc(i);
				CELL_INFO();				
				var r_cnt = doc(i).rows.length;
				
				for(var ii=0; ii < r_cnt; ii++) {
					c_cnt = doc(i).rows(ii).cells.length;
					
					for(var jj=0; jj< c_cnt; jj++) {
						doc(i).rows(ii).cells(jj).style.borderStyle = "dotted";

						//--
						if(doc(i).rows(ii).cells(jj).width == "" || doc(i).rows(ii).cells(jj).width*1 == 0) {
							doc(i).rows(ii).cells(jj).width = doc(i).rows(ii).cells(jj).offsetWidth;
						}
//---------------------------------------------------------------------------------------------------------------------------------------
						if(doc(i).rows(ii).cells(jj).height == "" || doc(i).rows(ii).cells(jj).height*1 == 0) {
							doc(i).rows(ii).cells(jj).height = doc(i).rows(ii).cells(jj).offsetHeight;
						}
						
						
						if(is_last_row(ii,jj)) {
							cTR = doc(i).rows(ii);
							cTD = doc(i).rows(ii).cells(jj);
							//doc(i).rows(ii).cells(jj).height = get_last_row_height();
							
						}
//---------------------------------------------------------------------------------------------------------------------------------------
						
						if(!is_last_col(ii,jj)) {
							if(is_first_col(ii,jj)) {
								
								if(doc(i).rows(ii).cells(jj).colSpan > 1) {
									doc(i).rows(ii).cells(jj).rewi  = doc(i).rows(ii).cells(jj).width;
									doc(i).rows(ii).cells(jj).width = doc(i).rows(ii).cells(jj).width - 1;
								} else {
									doc(i).rows(ii).cells(jj).rewi  = doc(i).rows(ii).cells(jj).width;
									doc(i).rows(ii).cells(jj).width = doc(i).rows(ii).cells(jj).width;
								}
								
							} else {
								doc(i).rows(ii).cells(jj).rewi  = doc(i).rows(ii).cells(jj).width;
								
								if(doc(i).rows(ii).cells(jj).width>1)
									doc(i).rows(ii).cells(jj).width = doc(i).rows(ii).cells(jj).width - 1;
							}
						}
					}
				}
				
				c_cnt = doc(i).rows(0).cells.length;
				r_cnt = doc(i).rows.length;
				
				var max_cc=0;
				var max_rr=0;
				
				for(ii=0; ii<r_cnt; ii++){
					if( max_cc < doc(i).rows(ii).cells.length ) {
						max_cc = doc(i).rows(ii).cells.length;
					}
				}
				
			} else if(doc(i).border * 1 == 1) {
				doc(i).style.borderCollapse = "collapse";
			}
			
		} else if(doc(i).tagName=="TD") {
			tControl = doc(i).parentElement;

	    while (tControl.tagName != 'TABLE') {
	      tControl = tControl.parentElement;
	    }
		}
	}
}
