  /*
   * 2009.09.28 추가 
   * 공통 : 파일업로드를 위한 프레임 HTML을 리턴한다.
   * 사용방법 : getFileUploadFrameHTML({VIEW_TYPE : 1, UPLOAD_ID : "1", ...})
   *           paramMap     : JSON Notation을 이용한 파라미터 정보를 담고 있는 Object
   *                          아래의 Property를 지원한다.
   *                          VIEW_TYPE     = 표시모드 (1: HTML Table을 이용해 출력, 2:WiseGrid를 이용해 출력)
   *                                         1번 모드는 다중의 파일을 업로드할시에 스크롤 기능이 없이 계속 늘어나는 형태이다.
   *                          UPLOAD_ID     = 한화면에 여러개의 파일 업로드 그룹이 있을시 구분을 위한 ID
   *                          MIN_FILE_CNT   = 다중 파일 업로드시에 최소 업로드 파일 갯수 제한.
   *                          MAX_FILE_CNT   = 다중 파일 업로드시에 최대 업로드 파일 갯수 제한.
   *                          MAX_FILE_SIZE  = 파일 하나의 제한 용량.
   *                          ALLOWED_FILE_EXT = 업로드를 허용할 확장자 리스트 (,로 구분)
   *                          FILE_MST_ID    = 값이 0보다 크면 로딩과 함께 파일그룹ID를 이용하여 해당 파일목록을 출력한다.
   *                          T_WIDTH        = 파일목록 테이블 넓이값
   *                          T_HEIGHT       = 파일목록 테이블 높이값 (VIEW_TYPE이 1일때는 동작 안함)
   *                          HEADER_VISIBLE= 파일업로드목록의 헤더 표시 여부(Y/N)
   *                          MODE          = 동작모드 (1: 멀티파일업로드, 2: 싱글파일업로드)
   *                          INFO_DISP = 업로드된 파일 정보 표시 방법
   *                                       3가지 요소를 가지고 ,로 구분되는 문자열로
   *                                       1번째 요소는  파일명 표시 여부(Y/N)
   *                                       2번째 요소는  파일 이미지 표시 여부(Y/N)
   *                                       3번째 요소는  파일 용량 표시 여부(Y/N)
   *                                       기본값) "Y,N,Y"
   *                                       사용예) MODE1_DISP : "N,Y,N"                                          
   * 리턴값  : HTML 코드 스트링, 에러 발생시 공백 리턴
   */
  function getFileUploadFrameHTML(paramMap) {
    try {
      if (getFileUploadFrameHTML.arguments.length < 1 ) {
        alert("getFileUploadFrameHTML() 함수의 첫번째 인자로 설정값을 담고 있는 JSON object를 입력하세요.");
        return "";
      }
      
      paramMap.WORK_ID = gWorkCode;
      paramMap.MENU_ID = gSubMenuID;
      
    } catch (e) {
      alert("getFileUploadFrameHTML() 함수 실행중에 에러가 발생했습니다.\n" + e + "\n" + e.message);
    }
    
    return getFULFrameHTML(paramMap);
  }
  
  /*
   * 2009.09.18 추가 
   * 공통 : 파일업로드를 위한 프레임을 현재 document에 출력한다.
   * 사용방법 : writeFileUploadFrame({VIEW_TYPE : 1, UPLOAD_ID : "1", ...})
   *           paramMap     : JSON Notation을 이용한 파라미터 정보를 담고 있는 Object
   *                          아래의 Property를 지원한다.
   *                          VIEW_TYPE     = 표시모드 (1: HTML Table을 이용해 출력, 2:WiseGrid를 이용해 출력)
   *                                         1번 모드는 다중의 파일을 업로드할시에 스크롤 기능이 없이 계속 늘어나는 형태이다.
   *                          UPLOAD_ID     = 한화면에 여러개의 파일 업로드 그룹이 있을시 구분을 위한 ID
   *                          MIN_FILE_CNT   = 다중 파일 업로드시에 최소 업로드 파일 갯수 제한.
   *                          MAX_FILE_CNT   = 다중 파일 업로드시에 최대 업로드 파일 갯수 제한.
   *                          MAX_FILE_SIZE  = 파일 하나의 제한 용량.
   *                          ALLOWED_FILE_EXT = 업로드를 허용할 확장자 리스트 (,로 구분)
   *                          FILE_MST_ID    = 값이 0보다 크면 로딩과 함께 파일그룹ID를 이용하여 해당 파일목록을 출력한다.
   *                          T_WIDTH        = 파일목록 테이블 넓이값
   *                          T_HEIGHT       = 파일목록 테이블 높이값 (VIEW_TYPE이 1일때는 동작 안함)
   *                          HEADER_VISIBLE= 파일업로드목록의 헤더 표시 여부(Y/N)
   *                          MODE          = 동작모드 (1: 멀티파일업로드, 2: 싱글파일업로드)
   *                          INFO_DISP = 업로드된 파일 정보 표시 방법
   *                                       3가지 요소를 가지고 ,로 구분되는 문자열로
   *                                       1번째 요소는  파일명 표시 여부(Y/N)
   *                                       2번째 요소는  파일 이미지 표시 여부(Y/N)
   *                                       3번째 요소는  파일 용량 표시 여부(Y/N)
   *                                       기본값) "Y,N,Y"
   *                                       사용예) MODE1_DISP : "N,Y,N"           
   * 리턴값  :  
   */
  function writeFileUploadFrame(paramMap) {
    
    try {
      if (writeFileUploadFrame.arguments.length < 1 ) {
        alert("writeFileUploadFrame() 함수의 첫번째 인자로 설정값을 담고 있는 JSON object를 입력하세요.");
        return;
      }
      
      //paramMap.WORK_ID = gWorkCode;
      paramMap.MENU_ID = gSubMenuID;
    } catch (e) {
      alert("writeFileUploadFrame() 함수 실행중에 에러가 발생했습니다.\n" + e + "\n" + e.message);
    }
    var resultHTML = [];
    //document.write(getFULFrameHTML(paramMap));
    resultHTML.push(getFULFrameHTML(paramMap));
    document.getElementById("uploadFrameDiv").innerHTML = resultHTML.join("");
    
  }
  
  /*
   * 2009.09.28 추가 
   * 공통 : 파일업로드를 위한 프레임 HTML을 리턴한다.
   * 사용방법 : getFULFrameHTML({VIEW_TYPE : 1, UPLOAD_ID : "1", ...})
   *           paramMap     : JSON Notation을 이용한 파라미터 정보를 담고 있는 Object
   *                          아래의 Property를 지원한다.
   *                          VIEW_TYPE     = 표시모드 (1: HTML Table을 이용해 출력, 2:WiseGrid를 이용해 출력)
   *                                         1번 모드는 다중의 파일을 업로드할시에 스크롤 기능이 없이 계속 늘어나는 형태이다.
   *                          UPLOAD_ID     = 한화면에 여러개의 파일 업로드 그룹이 있을시 구분을 위한 ID
   *                          MIN_FILE_CNT   = 다중 파일 업로드시에 최소 업로드 파일 갯수 제한.
   *                          MAX_FILE_CNT   = 다중 파일 업로드시에 최대 업로드 파일 갯수 제한.
   *                          MAX_FILE_SIZE  = 파일 하나의 제한 용량.
   *                          ALLOWED_FILE_EXT = 업로드를 허용할 확장자 리스트 (,로 구분)
   *                          FILE_MST_ID    = 값이 0보다 크면 로딩과 함께 파일그룹ID를 이용하여 해당 파일목록을 출력한다.
   *                          T_WIDTH        = 파일목록 테이블 넓이값
   *                          T_HEIGHT       = 파일목록 테이블 높이값 (VIEW_TYPE이 1일때는 동작 안함)
   *                          MENU_ID       = 메뉴ID (파일업로드를 수행하는 단위 세부 업무의 메뉴 ID)
   *                          WORK_ID       = 업무코드 (COM, ETM, SCM, LMB, ...)
   *                          HEADER_VISIBLE= 파일업로드목록의 헤더 표시 여부(Y/N)
   *                          MODE          = 동작모드 (1: 멀티파일업로드, 2: 싱글파일업로드)
   *                          INFO_DISP = 업로드된 파일 정보 표시 방법
   *                                       3가지 요소를 가지고 ,로 구분되는 문자열로
   *                                       1번째 요소는  파일명 표시 여부(Y/N)
   *                                       2번째 요소는  파일 이미지 표시 여부(Y/N)
   *                                       3번째 요소는  파일 용량 표시 여부(Y/N)
   *                                       기본값) "Y,N,Y"
   *                                       사용예) MODE1_DISP : "N,Y,N"                                          
   * 리턴값  : HTML 코드 스트링, 에러 발생시 공백 리턴
   */
  function getFULFrameHTML(paramMap) {    
    try {
      var strHTML = "";
      var tmpUploadID = "";
      
      if (getFULFrameHTML.arguments.length < 1 ) {
        alert("getFULFrameHTML() 함수의 첫번째 인자로 설정값을 담고 있는 JSON object를 입력하세요.");
        return "";
      }
      
      if (typeof paramMap.WORK_ID == "undefined") {
        alert("getFULFrameHTML() 함수의 첫번째 인자 Object에 WORK_ID 값이 설정되어 있지 않습니다.");
        return "";
      }
      
      if (typeof paramMap.MENU_ID == "undefined") {
        alert("getFULFrameHTML() 함수의 첫번째 인자 Object에 MENU_ID 값이 설정되어 있지 않습니다.");
        return "";
      }
      
      if (typeof paramMap.VIEW_TYPE == "undefined") {
        paramMap.VIEW_TYPE = 2;
      }
      
      if (typeof paramMap.UPLOAD_ID == "undefined") {
        paramMap.UPLOAD_ID = "";
      }
      
      if (typeof paramMap.MAX_FILE_CNT == "undefined") {
        paramMap.MAX_FILE_CNT = 0;
      }
      
      if (typeof paramMap.MIN_FILE_CNT == "undefined") {
        paramMap.MIN_FILE_CNT = 0;
      }
      
      if (typeof paramMap.MAX_FILE_SIZE == "undefined") {
        paramMap.MAX_FILE_SIZE = 0;
      }
      
      if (typeof paramMap.ALLOWED_FILE_EXT == "undefined") {
        paramMap.ALLOWED_FILE_EXT = "";
      }      
      
      if (typeof paramMap.FILE_MST_ID == "undefined") {
        paramMap.FILE_MST_ID = 0;
      }
      
      if (typeof paramMap.T_WIDTH == "undefined") {
        paramMap.T_WIDTH = "100%";
      }
      
      if (typeof paramMap.T_HEIGHT == "undefined") {
        paramMap.T_HEIGHT = "100";
      }
      
      if (typeof paramMap.HEADER_VISIBLE == "undefined") {
        paramMap.HEADER_VISIBLE = "Y";
      }
      
      if (typeof paramMap.MODE == "undefined") {
        paramMap.MODE = 1;
      }
      
      if (typeof paramMap.INFO_DISP == "undefined") {
        paramMap.INFO_DISP = "N,Y,N";
      }
      
      paramMap.INFO_DISP = paramMap.INFO_DISP.replaceAll(" ", "");
      
      if (paramMap.UPLOAD_ID != "") {
        tmpUploadID = "_" + paramMap.UPLOAD_ID; 
      }
      
      if (paramMap.MODE == 2) {
        strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
                + " id='IFRAME_FUL" + tmpUploadID + "' src='ComFileUpload_uploadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&WORK_ID=" + paramMap.WORK_ID + "&UL_ID=" + paramMap.UPLOAD_ID + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "&MIN_FILE_CNT=" + paramMap.MIN_FILE_CNT + "&MAX_FILE_CNT=" + paramMap.MAX_FILE_CNT + "&MAX_FILE_SIZE=" + paramMap.MAX_FILE_SIZE + "&ALLOWED_FILE_EXT=" + paramMap.ALLOWED_FILE_EXT + "&MENU_ID=" + paramMap.MENU_ID + "&INFO_DISP=" + paramMap.INFO_DISP + "'"
                + " width='" + paramMap.T_WIDTH + "' height='24'></iframe>";
      } else if (paramMap.MODE == 1) {
        if (paramMap.VIEW_TYPE == 1) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
                  + " id='IFRAME_FUL" + tmpUploadID + "' src='ComFileUpload_uploadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&WORK_ID=" + paramMap.WORK_ID + "&UL_ID=" + paramMap.UPLOAD_ID + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "&MIN_FILE_CNT=" + paramMap.MIN_FILE_CNT + "&MAX_FILE_CNT=" + paramMap.MAX_FILE_CNT + "&MAX_FILE_SIZE=" + paramMap.MAX_FILE_SIZE + "&ALLOWED_FILE_EXT=" + paramMap.ALLOWED_FILE_EXT + "&MENU_ID=" + paramMap.MENU_ID + "&INFO_DISP=" + paramMap.INFO_DISP + "'"
                  + " width='" + paramMap.T_WIDTH + "' height='33'></iframe>"
                  + "<br/>"
                  + "<table id='TB_FUL" + tmpUploadID + "' width='" + paramMap.T_WIDTH + "' border='0' cellpadding='0' cellspacing='0' align='center' class='write_line'>"
                  + "<tr height='20'"
                  + " style='display:"
                  + ((paramMap.HEADER_VISIBLE == "Y") ? "block" : "none")
                  + "'>"
                  + "<td width='10%' class='tdtop' align='center'>No</td>"
                  + "<td width='65%' class='tdtop' align='center'>첨부파일</td>"
                  + "<td width='15%' class='tdtop' align='center'>파일크기</td>"
                  + "<td width='10%' class='tdtop' align='center'>삭제</td>"
                  + "</tr>"            
                  + "</table>"
                  + "<br>";
        } else if (paramMap.VIEW_TYPE == 2) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
                  + " id='IFRAME_FUL" + tmpUploadID + "' src='#'"
                  + " width='" + paramMap.T_WIDTH + "' height='24'></iframe>"
                  + "<br/><br/>"
                  + "<script language='javascript' for='WISEGRID_FUL" + tmpUploadID + "' event='CellClick(strColumnKey,nRow)'>"
                  + "  var GridObj = document.getElementById('WISEGRID_FUL" + tmpUploadID + "');"
                  + "  if (strColumnKey == 'FILE_NM') {"
                  + "    downloadFile(GridObj.GetCellValue('FILE_MST_ID', nRow), GridObj.GetCellValue('FILE_DTL_SEQ', nRow));"
                  + "  } else if (strColumnKey == 'DELETE') {"                  
                  + "    document.getElementById('IFRAME_FUL" + tmpUploadID + "').contentWindow.deleteAttachFileRow('" + paramMap.UPLOAD_ID + "', nRow);"
                  + "  }"
                  + "</script>"
                  + "<script language='javascript' for='WISEGRID_FUL" + tmpUploadID + "' event='Initialize()'>"
                  + "  var GridObj = document.getElementById('WISEGRID_FUL" + tmpUploadID + "');"
                  + "  "
                  + "  GridObj.AddHeader('NO', 'NO', 't_number', 10, '10%', false);"
                  + "  GridObj.AddHeader('FILE_NM', '파일명', 't_text', 200, '80%', false);"
                  + "  GridObj.AddHeader('FILE_SIZE', '파일크기', 't_text', 20, '15%', false);"
                  + "  GridObj.AddHeader('DELETE', '삭제', 't_imagetext', 10, '48', false);"
                  + "  GridObj.AddHeader('FILE_MST_ID', 'FILE_MST_ID', 't_number', 20, 0, false);"
                  + "  GridObj.AddHeader('FILE_DTL_SEQ', 'FILE_DTL_SEQ', 't_number', 20, 0, false);"
                  + "  GridObj.BoundHeader();    "
                  + "  GridObj.SetColCellAlign('NO', 'center');    "
                  + "  GridObj.SetColCellAlign('FILE_NM', 'left');    "
                  + "  GridObj.SetColCellAlign('FILE_SIZE', 'right');    "              
                  + "  GridObj.SetColHide('FILE_MST_ID', true);"
                  + "  GridObj.SetColHide('FILE_DTL_SEQ', true);"
                  + "  GridObj.AddImageList('DELETE', './common/images/button/b_delete.gif');"
                  + "  setProperty(GridObj);"
                  + "  GridObj.bStatusbarVisible = false;"
                  + "  GridObj.SetColCellCursor('FILE_NM', 'hand');"
                  + "  document.getElementById('IFRAME_FUL" + tmpUploadID + "').src = 'ComFileUpload_uploadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&WORK_ID=" + paramMap.WORK_ID + "&UL_ID=" + paramMap.UPLOAD_ID + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "&MIN_FILE_CNT=" + paramMap.MIN_FILE_CNT + "&MAX_FILE_CNT=" + paramMap.MAX_FILE_CNT + "&MAX_FILE_SIZE=" + paramMap.MAX_FILE_SIZE + "&ALLOWED_FILE_EXT=" + paramMap.ALLOWED_FILE_EXT + "&MENU_ID=" + paramMap.MENU_ID + "&INFO_DISP=" + paramMap.INFO_DISP + "';"
                  + ((paramMap.HEADER_VISIBLE == "Y") ? "" : "  GridObj.bHDVisible = false;")
                  + "  "
                  + "</script>"
                  + getWiseGridObjectTag("WISEGRID_FUL" + tmpUploadID, paramMap.T_WIDTH, paramMap.T_HEIGHT)
                  + "";
        }else if (paramMap.VIEW_TYPE == 3) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
            + " id='IFRAME_FUL" + tmpUploadID + "' src='ComFileUpload_uploadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&WORK_ID=" + paramMap.WORK_ID + "&UL_ID=" + paramMap.UPLOAD_ID + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "&MIN_FILE_CNT=" + paramMap.MIN_FILE_CNT + "&MAX_FILE_CNT=" + paramMap.MAX_FILE_CNT + "&MAX_FILE_SIZE=" + paramMap.MAX_FILE_SIZE + "&ALLOWED_FILE_EXT=" + paramMap.ALLOWED_FILE_EXT + "&MENU_ID=" + paramMap.MENU_ID + "&INFO_DISP=" + paramMap.INFO_DISP + "'"
            + " width='" + paramMap.T_WIDTH + "' height='33'></iframe>"
            + "<br/>"
            + "<table id='TB_FUL" + tmpUploadID + "' width='" + paramMap.T_WIDTH + "' border='0' cellpadding='0' cellspacing='0' align='center' class='write_line'>"
            + "<tr height='20'"
            + " style='display:"
            + ((paramMap.HEADER_VISIBLE == "Y") ? "block" : "none")
            + "'>"
            + "<td width='10%' class='tdtop' align='center'>No</td>"
            + "<td width='65%' class='tdtop' align='center'>첨부파일</td>"
            + "<td width='15%' class='tdtop' align='center'>파일크기</td>"
            + "</tr>"            
            + "</table>"
            + "<br>";
        }
      } else if (paramMap.MODE == 3) {
        if (paramMap.VIEW_TYPE == 1) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
                  + " id='IFRAME_FUL" + tmpUploadID + "' src='ComFileUpload_uploadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&WORK_ID=" + paramMap.WORK_ID + "&UL_ID=" + paramMap.UPLOAD_ID + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "&MIN_FILE_CNT=" + paramMap.MIN_FILE_CNT + "&MAX_FILE_CNT=" + paramMap.MAX_FILE_CNT + "&MAX_FILE_SIZE=" + paramMap.MAX_FILE_SIZE + "&ALLOWED_FILE_EXT=" + paramMap.ALLOWED_FILE_EXT + "&MENU_ID=" + paramMap.MENU_ID + "&INFO_DISP=" + paramMap.INFO_DISP + "'"
                  + " width='" + paramMap.T_WIDTH + "' height='24'></iframe>"
                  + "<br/>"
                  + "<table id='TB_FUL" + tmpUploadID + "' width='" + paramMap.T_WIDTH + "' border='0' cellpadding='0' cellspacing='0' align='center' class='write_line'>"
                  + "<tr height='20'"
                  + " style='display:"
                  + ((paramMap.HEADER_VISIBLE == "Y") ? "block" : "none")
                  + "'>"
                  + "<td width='10%' class='write_hearder' align='center'>No</td>"
                  + "<td width='65%' class='write_hearder' align='center'>첨부파일</td>"
                  + "<td width='15%' class='write_hearder' align='center'>파일크기</td>"
                  + "<td width='10%' class='write_hearder' align='center'>삭제</td>"
                  + "</tr>"            
                  + "</table>";
        }else if (paramMap.VIEW_TYPE == 2) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
            + " id='IFRAME_FUL" + tmpUploadID + "' src='ComFileUpload_uploadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&WORK_ID=" + paramMap.WORK_ID + "&UL_ID=" + paramMap.UPLOAD_ID + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "&MIN_FILE_CNT=" + paramMap.MIN_FILE_CNT + "&MAX_FILE_CNT=" + paramMap.MAX_FILE_CNT + "&MAX_FILE_SIZE=" + paramMap.MAX_FILE_SIZE + "&ALLOWED_FILE_EXT=" + paramMap.ALLOWED_FILE_EXT + "&MENU_ID=" + paramMap.MENU_ID + "&INFO_DISP=" + paramMap.INFO_DISP + "'"
            + " width='" + paramMap.T_WIDTH + "' height='24'></iframe>"
            + "<br/><br/>"
            + "<table id='TB_FUL" + tmpUploadID + "' width='" + paramMap.T_WIDTH + "' border='0' cellpadding='0' cellspacing='1' align='center' class='write_line'>"
            + "<tr height='20'"
            + " style='display:"
            + ((paramMap.HEADER_VISIBLE == "Y") ? "block" : "none")
            + "'>"
            + "<td width='10%' class='write_hearder' align='center'>No</td>"
            + "<td width='65%' class='write_hearder' align='center'>첨부파일</td>"
            + "<td width='15%' class='write_hearder' align='center'>파일크기</td>"
            + "</tr>"            
            + "</table>";
        }else if (paramMap.VIEW_TYPE == 3) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
            + " id='IFRAME_FUL" + tmpUploadID + "' src='ComFileUpload_uploadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&WORK_ID=" + paramMap.WORK_ID + "&UL_ID=" + paramMap.UPLOAD_ID + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "&MIN_FILE_CNT=" + paramMap.MIN_FILE_CNT + "&MAX_FILE_CNT=" + paramMap.MAX_FILE_CNT + "&MAX_FILE_SIZE=" + paramMap.MAX_FILE_SIZE + "&ALLOWED_FILE_EXT=" + paramMap.ALLOWED_FILE_EXT + "&MENU_ID=" + paramMap.MENU_ID + "&INFO_DISP=" + paramMap.INFO_DISP + "'"
            + " width='" + paramMap.T_WIDTH + "' height='0'></iframe>"
            + "<br/>"
            + "<table id='TB_FUL" + tmpUploadID + "' width='" + paramMap.T_WIDTH + "' border='0' cellpadding='0' cellspacing='0' align='center' class='write_line'>"
            + "<tr height='20'"
            + " style='display:"
            + ((paramMap.HEADER_VISIBLE == "Y") ? "block" : "none")
            + "'>"
            + "<td width='10%' class='write_hearder' align='center'>No</td>"
            + "<td width='65%' class='write_hearder' align='center'>첨부파일</td>"
            + "<td width='15%' class='write_hearder' align='center'>파일크기</td>"
            + "</tr>"            
            + "</table>";
          }
      }

      return strHTML;
    } catch (e) {
      alert("getFULFrameHTML() 함수 실행중에 에러가 발생했습니다.\n" + e + "\n" + e.message);
    }
    
    return "";
  }
  
  /*
   * 2009.09.21 추가 
   * 공통 : 업로드 프레임에 현재 업로드된 파일 개수를 반환한다.
   * 사용방법 : getUploadedFileCnt(uploadID)
   *           uploadID     : 한화면에 여러개의 파일 업로드 그룹이 있을시 구분을 위한 ID
   * 리턴값  : 업로드된 파일 개수
   */
  function getUploadedFileCnt(uploadID) {
    
    try {
      var tmpUploadID = "";
      
      if (getUploadedFileCnt.arguments.length < 1 ) {
        uploadID = "";
      }
      
      if (uploadID != "") {
        tmpUploadID = "_" + uploadID; 
      }
      
      var iFrameObj = document.getElementById("IFRAME_FUL" + tmpUploadID);
      
      if (iFrameObj == null || typeof iFrameObj == "undefined" || iFrameObj.tagName != "IFRAME") {
        alert("writeFileUploadFrame() 함수를 이용하여 ID=[" + uploadID + "] 에 대한 파일 업로드 프레임을 생성하세요.");
        return 0;
      }
      
      return iFrameObj.contentWindow.getAttachFileRowCnt(uploadID);
    } catch (e) {
      alert("getUploadedFileCnt() 함수 실행중에 에러가 발생했습니다.\n" + e + "\n" + e.message);
    }
    
    return 0;
  }
  
  /*
   * 2009.09.28 추가 
   * 공통 : 파일다운로드를 위한 프레임 HTML을 리턴한다.
   * 사용방법 : getFileDownloadFrameHTML({VIEW_TYPE : 1, FILE_MST_ID : 99, ...})
   *           paramMap     : JSON Notation을 이용한 파라미터 정보를 담고 있는 Object
   *                          아래의 Property를 지원한다.
   *                          VIEW_TYPE     = 표시모드 (1: HTML Table을 이용해 출력, 2:WiseGrid를 이용해 출력)
   *                                         1번 모드는 다중의 파일을 표시할때 스크롤 기능이 없이 표시하는 형태이다.
   *                          FILE_MST_ID    = 다운로드 정보를 표시할 파일그룹ID.
   *                          T_WIDTH        = 파일목록 테이블 넓이값
   *                          T_HEIGHT       = 파일목록 테이블 높이값 (VIEW_TYPE이 1일때는 동작 안함)
   *                          HEADER_VISIBLE= 파일업로드목록의 헤더 표시 여부(Y/N)
   *                          MODE          = 동작모드 (1: 멀티파일다운로드, 2: 싱글파일다운로드)
   * 리턴값  :  HTML 코드 스트링, 에러 발생시 공백 리턴
   */
  function getFileDownloadFrameHTML(paramMap) {
    try {
      var strHTML = "";
      
      if (getFileDownloadFrameHTML.arguments.length < 1 ) {
        alert("getFileDownloadFrameHTML() 함수의 첫번째 인자로 설정값을 담고 있는 JSON object를 입력하세요.");
        return "";
      }
      
      if (typeof paramMap.FILE_MST_ID == "undefined") {
        alert("getFileDownloadFrameHTML() 함수의 첫번째 인자 Object에 FILE_MST_ID 값이 설정되어 있지 않습니다.");
        return "";
      }
      
      if (isNaN(paramMap.FILE_MST_ID)) {
        alert("getFileDownloadFrameHTML() 함수의 첫번째 인자 Object에 FILE_MST_ID 값이 형식에 맞지 않습니다.");
        return "";
      }
      
      if (typeof paramMap.VIEW_TYPE == "undefined") {
        paramMap.VIEW_TYPE = 2;
      }
      
      if (typeof paramMap.T_WIDTH == "undefined") {
        paramMap.T_WIDTH = "100%";
      }
      
      if (typeof paramMap.T_HEIGHT == "undefined") {
        paramMap.T_HEIGHT = "100";
      }
        
      if (typeof paramMap.HEADER_VISIBLE == "undefined") {
        paramMap.HEADER_VISIBLE = "Y";
      }
      
      if (typeof paramMap.MODE == "undefined") {
        paramMap.MODE = 1;
      }
      
      if (paramMap.FILE_MST_ID == 0) {
        while(true) {
          var objIFrame = document.getElementById("IFRAME_FDN" + paramMap.FILE_MST_ID);
          if (objIFrame != null && typeof objIFrame != "undefined" && objIFrame.tagName == "IFRAME") {
            paramMap.FILE_MST_ID = paramMap.FILE_MST_ID - 1;
          } else {
            break;
          }
        }
      }
      
      if (paramMap.MODE == 2) {
        strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
          + " id='IFRAME_FDN" + paramMap.FILE_MST_ID + "' src='ComFileDownload_downloadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "'"
          + " width='" + paramMap.T_WIDTH + "' height='24'></iframe>";
      } else if (paramMap.MODE == 1) {
        if (paramMap.VIEW_TYPE == 1) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
                  + " id='IFRAME_FDN" + paramMap.FILE_MST_ID + "' src='ComFileDownload_downloadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "'"
                  + " width='" + paramMap.T_WIDTH + "' height='0'></iframe>"
                  + "<table id='TB_FDN" + paramMap.FILE_MST_ID + "' width='" + paramMap.T_WIDTH + "' border='0' cellpadding='0' cellspacing='1' align='center' class='write_line'>"
                  + "<tr height='20'"
                  + " style='display:"
                  + ((paramMap.HEADER_VISIBLE == "Y") ? "block" : "none")
                  + "'>"
                  + "<td width='10%' class='write_hearder' align='center'>No</td>"
                  + "<td width='*' class='write_hearder' align='center'>첨부파일</td>"
                  + "<td width='20%' class='write_hearder' align='center'>파일크기</td>"            
                  + "</tr>"            
                  + "</table>";
        } else if (paramMap.VIEW_TYPE == 2) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
                  + " id='IFRAME_FDN" + paramMap.FILE_MST_ID + "' src='#'"
                  + " width='" + paramMap.T_WIDTH + "' height='0'></iframe>"
                  + "<script language='javascript' for='WISEGRID_FDN" + paramMap.FILE_MST_ID + "' event='CellClick(strColumnKey,nRow)'>"
                  + "  var GridObj = document.getElementById('WISEGRID_FDN" + paramMap.FILE_MST_ID + "');"
                  + "  if (strColumnKey == 'FILE_NM') {"
                  + "    downloadFile(GridObj.GetCellValue('FILE_MST_ID', nRow), GridObj.GetCellValue('FILE_DTL_SEQ', nRow));"
                  + "  }"
                  + "</script>"
                  + "<script language='javascript' for='WISEGRID_FDN" + paramMap.FILE_MST_ID + "' event='Initialize()'>"
                  + "  var GridObj = document.getElementById('WISEGRID_FDN" + paramMap.FILE_MST_ID + "');"
                  + "  "
                  + "  GridObj.AddHeader('NO', 'NO', 't_number', 10, '10%', false);"
                  + "  GridObj.AddHeader('FILE_NM', '파일명', 't_text', 200, '75%', false);"
                  + "  GridObj.AddHeader('FILE_SIZE', '파일크기', 't_text', 20, '15%', false);"
                  + "  GridObj.AddHeader('FILE_MST_ID', 'FILE_MST_ID', 't_number', 20, 0, false);"
                  + "  GridObj.AddHeader('FILE_DTL_SEQ', 'FILE_DTL_SEQ', 't_number', 20, 0, false);"
                  + "  GridObj.BoundHeader();    "
                  + "  GridObj.SetColCellAlign('NO', 'center');    "
                  + "  GridObj.SetColCellAlign('FILE_NM', 'left');    "
                  + "  GridObj.SetColCellAlign('FILE_SIZE', 'right');    "              
                  + "  GridObj.SetColHide('FILE_MST_ID', true);"
                  + "  GridObj.SetColHide('FILE_DTL_SEQ', true);"
                  + "  setProperty(GridObj);"
                  + "  GridObj.bStatusbarVisible = false;"
                  + "  GridObj.SetColCellCursor('FILE_NM', 'hand');"
                  + "  document.getElementById('IFRAME_FDN" + paramMap.FILE_MST_ID + "').src='ComFileDownload_downloadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "';"
                  + ((paramMap.HEADER_VISIBLE == "Y") ? "" : "  GridObj.bHDVisible = false;")
                  + "  "
                  + "</script>"
                  + getWiseGridObjectTag("WISEGRID_FDN" + paramMap.FILE_MST_ID, paramMap.T_WIDTH, paramMap.T_HEIGHT)
                  + "";
        }
      } else if (paramMap.MODE == 3) {
        if (paramMap.VIEW_TYPE == 1) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
                  + " id='IFRAME_FDN" + paramMap.FILE_MST_ID + "' src='ComFileDownload_downloadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "'"
                  + " width='" + paramMap.T_WIDTH + "' height='0'></iframe>"
                  + "<table id='TB_FDN" + paramMap.FILE_MST_ID + "' width='" + paramMap.T_WIDTH + "' border='0' cellpadding='0' cellspacing='1' align='center' class='write_line'>"
                  + "<tr height='20'"
                  + " style='display:"
                  + ((paramMap.HEADER_VISIBLE == "Y") ? "block" : "none")
                  + "'>"
                  + "<td width='10%' class='write_hearder' align='center'>No</td>"
                  + "<td width='*' class='write_hearder' align='center'>첨부파일</td>"
                  + "<td width='20%' class='write_hearder' align='center'>파일크기</td>"            
                  + "</tr>"
                  + "</table>";
        }else if (paramMap.VIEW_TYPE == 3) {
          strHTML += "<iframe frameborder='0' leftmargin='0' marginheight='0' marginwidth='0' topmargin='0' scrolling='no' valign='top'"
            + " id='IFRAME_FDN" + paramMap.FILE_MST_ID + "' src='ComFileDownload_downloadFrame.action?VIEW_TYPE=" + paramMap.VIEW_TYPE + "&MODE=" + paramMap.MODE + "&FILE_MST_ID=" + paramMap.FILE_MST_ID + "'"
            + " width='" + paramMap.T_WIDTH + "' height='0'></iframe>"
            + "<table id='TB_FDN" + paramMap.FILE_MST_ID + "' width='" + paramMap.T_WIDTH + "' border='0' cellpadding='0' cellspacing='1' align='center' class='write_line'>"
            + "<tr height='20'"
            + " style='display:"
            + ((paramMap.HEADER_VISIBLE == "Y") ? "block" : "none")
            + "'>"
            + "<td width='10%' class='write_hearder' align='center'>No</td>"
            + "<td width='*' class='write_hearder' align='center'>첨부파일</td>"
            + "<td width='20%' class='write_hearder' align='center'>파일크기</td>"            
            + "</tr>"
            + "</table>";
        }
      }
      
      return strHTML;      
    } catch (e) {
      alert("getFileDownloadFrameHTML() 함수 실행중에 에러가 발생했습니다.\n" + e + "\n" + e.message);
    }
    
    return "";
  }
  /*
   * 2009.09.18 추가 
   * 공통 : 파일다운로드를 위한 프레임을 현재 document에 출력한다.
   * 사용방법 : writeFileDownloadFrame({VIEW_TYPE : 1, FILE_MST_ID : 99, ...})
   *           paramMap     : JSON Notation을 이용한 파라미터 정보를 담고 있는 Object
   *                          아래의 Property를 지원한다.
   *                          VIEW_TYPE     = 표시모드 (1: HTML Table을 이용해 출력, 2:WiseGrid를 이용해 출력)
   *                                         1번 모드는 다중의 파일을 표시할때 스크롤 기능이 없이 표시하는 형태이다.
   *                          FILE_MST_ID    = 다운로드 정보를 표시할 파일그룹ID.
   *                          T_WIDTH        = 파일목록 테이블 넓이값
   *                          T_HEIGHT       = 파일목록 테이블 높이값 (VIEW_TYPE이 1일때는 동작 안함)
   *                          HEADER_VISIBLE= 파일업로드목록의 헤더 표시 여부(Y/N)
   *                          MODE          = 동작모드 (1: 멀티파일다운로드, 2: 싱글파일다운로드)
   * 리턴값  :  
   */
  function writeFileDownloadFrame(paramMap) {
    try {
      if (writeFileDownloadFrame.arguments.length < 1 ) {
        alert("writeFileDownloadFrame() 함수의 첫번째 인자로 설정값을 담고 있는 JSON object를 입력하세요.");
        return;
      }
      
      if (typeof paramMap.FILE_MST_ID == "undefined") {
        alert("writeFileDownloadFrame() 함수의 첫번째 인자 Object에 FILE_MST_ID 값이 설정되어 있지 않습니다.");
        return;
      }
      
      document.write(getFileDownloadFrameHTML(paramMap));
    } catch (e) {
      alert("writeFileDownloadFrame() 함수 실행중에 에러가 발생했습니다.\n" + e + "\n" + e.message);
    }
  }

  /*
   * 2009.09.18 추가 
   * 공통 : 첨부 파일 목록 화면 팝업 모달 다이얼로그를 Open 한다.
   * 사용방법 : popupDownloadFileList({FILE_MST_ID : 1, EDITABLE : true})
   *           paramMap     : JSON Notation을 이용한 파라미터 정보를 담고 있는 Object
   *                          아래의 Property를 지원한다.
   *                          FILE_MST_ID    = 다운로드 정보를 표시할 파일그룹ID.
   *                          EDITABLE     = 파일 삭제 가능 여부 (true/false)
   * 리턴값  :  
   */
  function popupDownloadFileList(paramMap) {
    try {
      if (popupDownloadFileList.arguments.length < 1 ) {
        alert("popupDownloadFileList() 함수의 첫번째 인자로 설정값을 담고 있는 JSON object를 입력하세요.");
        return;
      }
      
      if (typeof paramMap.FILE_MST_ID == "undefined") {
        alert("popupDownloadFileList() 함수의 첫번째 인자 Object에 FILE_MST_ID 값이 설정되어 있지 않습니다.");
        return;
      }
      
      if (typeof paramMap.EDITABLE == "undefined") {
        paramMap.EDITABLE = false;
      }
        
      var params = "?FILE_MST_ID=" + paramMap.FILE_MST_ID + "&editFlag=" + (paramMap.EDITABLE ? "Y" : "N");
      var width = 430, height = 400;
      var leftPos = (screen.availWidth - width) / 2;
      var topPos = (screen.availHeight - height) / 2;
      var winObj = window.open("ComFileDownload_listFile.action" + params, "fileDownloadPopup", "top=" + topPos + ",left=" + leftPos + ",width=" + width + ",height=" + height + ",menubar=no,titlebar=no,toolbar=no,location=no,resizable=no,status=no,scrollbars=no");
      winObj.focus();
      //var dialogHeight = getDialogHeight(410);
      //window.showModalDialog("ComFileDownload_listFile.action" + params, "files", "dialogWidth:420px;dialogHeight:" + dialogHeight + "px;scroll:no;");
    } catch (e) {
      alert("popupDownloadFileList() 함수 실행중에 에러가 발생했습니다.\n" + e + "\n" + e.message);
    }
  }
  
  /*
   * 2009.09.21 추가 
   * 공통 : 첨부 파일을 다운로드 한다.
   * 사용방법 : downloadFile(fileMstId, fileDtlSeq)
   *           fileMstId    : 다운로드 할 파일그룹ID
   *           fileDtlSeq   : 다운로드 할 파일 상세 SEQ
   * 리턴값  : false
   */
  function downloadFile(fileMstId, fileDtlSeq) {
    if (downloadFile.arguments.length < 2 ) {
      alert("downloadFile() 함수의 파라미터가 잘못 설정 되었습니다.");
      return false;
    }
    
    try {
      var objIFrame = document.getElementById("IFRAME_FOR_FILE_DOWNLOAD");
      
      if (objIFrame == null || typeof objIFrame == "undefined" || objIFrame.tagName != "IFRAME") {
        var strHTML = "<div style='display:none'>"
                    + "<IFRAME id='IFRAME_FOR_FILE_DOWNLOAD' src='#' width='0' height='0'></IFRAME>"
                    + "</div>";
        document.body.insertAdjacentHTML("beforeEnd", strHTML);
        
        objIFrame = document.getElementById("IFRAME_FOR_FILE_DOWNLOAD");
      }
      
      objIFrame.src = "ComFileDownload_downloadFile.action?FILE_MST_ID=" + fileMstId + "&FILE_DTL_SEQ=" + fileDtlSeq;
    } catch(e) {
      alert("downloadFile() 함수의 실행중 에러가 발생 했습니다.\n" + e + "\n" + e.message);
    }
    
    return false;
  }
  
  /*
   * 2009.11.05 추가 
   * 공통 : 이미지 Element를 서버의 이미지로 변경 한다.
   * 사용방법 : updateImageSrc(imgId, fileMstId, fileDtlSeq)
   *           imgId        : 이미지를 설정할 HTML img Element 의 ID
   *           fileMstId    : 파일그룹ID
   *           fileDtlSeq   : 파일 상세 SEQ
   * 리턴값  : false
   */
  function updateImageSrc(imgId, fileMstId, fileDtlSeq) {
    if (updateImageSrc.arguments.length < 3 ) {
      alert("updateImageSrc() 함수의 파라미터가 잘못 설정 되었습니다.");
      return false;
    }
    
    try {
      document.getElementById(imgId).src = "ComFileDownload_downloadFile.action?FILE_MST_ID=" + fileMstId + "&FILE_DTL_SEQ=" + fileDtlSeq;
    } catch(e) {
      alert("updateImageSrc() 함수의 실행중 에러가 발생 했습니다.\n" + e + "\n" + e.message);
    }
    
    return false;
  }


