var winigrid_ContextRoot = "/winierp/"; var winigrid_ClickColor = "#fff0f0"; var winigrid_OverColor = "#f3f3f3"; var winigrid_DefaultColor = "#ffffff"; function MM_moveURL(url) { // v1.0 location.href = url; } // 그리드 생성호출 function winigrid_call(grid_type) { var tbl = $("#"+grid_type.tableid); if(grid_type.page == null) { grid_type.page = "1"; } var aparm = "page="+grid_type.page+"&rowNum="+grid_type.rowNum+"&"; if (typeof grid_type.postData == "string") { aparm += grid_type.postData; } else { aparm += toEncodeParams(grid_type.postData); //alert("encoding=="+this.params); } tbl.addClass("wini_tablewidth100"); // grid 숨김여부 if (!grid_type.viewrecords) tbl.addClass("wini_displayhidden"); if ($("#"+grid_type.tableid+"_header").length <= 0) { tbl.append(winigrid_createHeader(grid_type)); // 해더(타이틀)를 생성한다 if(grid_type.headmerge) // head title 병합 winigrid_mergeHead_header(grid_type); } $("#"+grid_type.tableid+"_buffering").removeClass("wini_displayhidden"); if (grid_type.dummyList == true) { // 타이틀만 나오게 한다 deleRow(grid_type.tableid+"_body"); // 이전 데이터 삭제 $("#"+grid_type.tableid+"_buffering").addClass("wini_displayhidden"); } else { $.ajax({ url:grid_type.url, type:grid_type.mtype, dataType:"json", data:aparm, async:true, error: function(){ deleRow(grid_type.tableid+"_body"); // 이전 데이터 삭제 alert('조회중 오류가 발생하였습니다.'); $("#"+grid_type.tableid+"_buffering").addClass("wini_displayhidden"); }, success:function(jdata) { deleRow(grid_type.tableid+"_body"); // 이전 데이터 삭제 var addrow = winigrid_defaultgrid(jdata, grid_type); var tbl_body = $("#"+grid_type.tableid+"_body"); tbl_body.append(addrow); if (grid_type.viewpager) // pager getPaging(grid_type, jdata); if(grid_type.datamerge && jdata.rows.length > 0) // grid 내용 병합 winigrid_mergeCellAll_body(grid_type); // data merge $("#"+grid_type.tableid+"_buffering").addClass("wini_displayhidden"); if (grid_type.gredCallBack != null && grid_type.gredCallBack != "") // eval(grid_type.gredCallBack); // 그리드 출력후 호출 함수 실행 } }); } } // 파라미터 Encode function toEncodeParams(list) { var params = ""; for (name in list) { if (params != "") params += "&"; params += name + "=" + encodeURIComponent(list[name]); } return params; } //헤더 생성 function winigrid_createHeader(grid_type) { var widthsize_style = ""; var widthUnit = "px"; // width 자동100% if (grid_type.autowidth) widthsize_style = "wini_tablewidth100"; var rowscroll_style = ""; if (grid_type.rowscroll) rowscroll_style = " overflow-y: scroll; scrollbar-arrow-color: #ffffff;"; var tblid = grid_type.tableid; var tblrow = '
'; tblrow += ''; //tblrow += ''; for(var k = 0; k < grid_type.colNames.length+1; k++) { if (k == 0) { tblrow += ''; tblrow += winigid_create_colgroup(grid_type); // colgroup 생성 } if (k == grid_type.colNames.length) { tblrow += ''; if (grid_type.rownumbers) tblrow += ''; if (grid_type.multiselect) tblrow += ''; for(var j = 0; j < grid_type.colNames[k-1].head.length; j++) { cellhidden = grid_type.colModel[j].hidden ? 'none;' : ''; //cell 숨김 wid = ""; tblrow += ''; for(var j = 0; j < grid_type.colNames[k].head.length; j++) { cellhidden = grid_type.colModel[j].hidden ? 'none;' : ''; //cell 숨김 tblrow += ''; } } //tblrow += ''; overflow-y: scroll; tblrow += '
목록타이틀
'; } tblrow += '
'; tblrow += '
'; var rowscroll_style = ""; if (grid_type.rowscroll) rowscroll_style = "height:"+grid_type.dataheight+"px; overflow-y: scroll;"; tblrow += ' 조회중입니다.
'; tblrow += '
'; tblrow += ''; tblrow += '
'; tblrow += '
'; //alert(tblrow); return tblrow; } // colgroup 생성 function winigid_create_colgroup(grid_type) { var tblrow = ""; tblrow += ''; if (grid_type.rownumbers) tblrow += ''; if (grid_type.multiselect) tblrow += ''; for(var j = 0; j < grid_type.colNames[0].head.length; j++) { if (!grid_type.colModel[j].hidden) { var wid = grid_type.colModel[j].width; if (wid == 0) tblrow += ''; else tblrow += ''; } } tblrow += ''; return tblrow; } // 그리드 본문내용 생성 function winigrid_defaultgrid(Res, grid_type) { var tbl = $("#"+grid_type.tableid); var widthsize_style = ""; if (grid_type.autowidth) widthsize_style = "wini_tablewidth100"; var addrow = ''; var first_search_yn = "Y"; var results = Res; //eval("("+Res.responseText+")"); //deleRow(grid_type.tableid+"_body"); // 이전 데이터 삭제 // 총 데이터 건수 표시 if ($("#"+grid_type.tableid+"Cnt").length > 0) { $("#"+grid_type.tableid+"Cnt").html(results.records); } var j_data = ''; var objcell = ''; var cellhidden = ''; var leftrownum = Number(results.records)-((results.page-1)*results.rowNum); // 왼쪽 rownum var headcnt = grid_type.colModel.length // 해더수 var headrowcnt = 1; // 타이틀 라인수 for(var i = 0; i < results.rows.length; i++) { if (headcnt < results.rows[0].cell.length) { alert('Header 정의수가 데이터 수보다 적음!'); return false; } if ($("#"+grid_type.tableid+"_body caption").length <= 0 && i == 0) { addrow += '목록내용'; addrow += winigid_create_colgroup(grid_type); // colgroup 생성 addrow += ''; } var onClickEventLink = grid_type.onClickRow+"("+results.rows[i].id+");"; var ondblclickRowEventLink = grid_type.ondblclickRow+"("+results.rows[i].id+");"; // 더블클릭 이벤트 if(grid_type.onClickRow || grid_type.ondblclickRow ) { // 클릭이벤트가 있을경우 addrow += ''; addrow += tdvalue(grid_type.colModel[j].coltype, grid_type.colModel[j].index, j_data, results.rows[i].id); addrow += ''; } } else{ for(var j = 0; j < headcnt; j++) { j_data = ""; if (results.rows[i].cell[j] != null) { j_data = results.rows[i].cell[j]; } cellhidden = grid_type.colModel[j].hidden ? 'none;' : ''; //cell 숨김 addrow += ''; addrow += tdvalue(grid_type.colModel[j].coltype, grid_type.colModel[j].index, j_data, results.rows[i].id); addrow += ''; } addrow += ''; } addrow += ''; return addrow } function tdvalue(coltype, colid, j_data, idx) { //alert(colid); var val = ""; if (Number(idx) < 8000000) { switch (coltype) { case "checkbox": val = ''; break; case "radio": val = ''; break; case "text": val = ''; break; default : val = j_data; break; } } return val } // 왼쪽 번호 function createnumber(num) { var rownum = " "; if (num > 0) rownum = num; return ''+rownum+''; } // 선택 체크박스 생성 function createcheckbox(tblid, idx) { var calval = ""; if (Number(idx) < 8000000) calval = ''; else calval = ''; return calval; } function winigrdi_gettitleheadcnt(tblid) { var headcnt = 0; $("#"+tblid+"_header tr").each( function() { // 타이틀 해더수를 구한다 if(this.id == "" || this.id == null) headcnt++; } ) return headcnt-1; } // 헤더 생성 function createHeader(grid_type) { var tblid = grid_type.tableid; var tblrow = '' for(var k = 0; k < grid_type.colNames.length; k++) { tblrow += ''; if (grid_type.rownumbers) tblrow += ' '; if (grid_type.multiselect) tblrow += ''; for(var j = 0; j < grid_type.colNames[k].head.length; j++) { cellhidden = grid_type.colModel[j].hidden ? 'none;' : ''; //cell 숨김 tblrow += ''; } tblrow += ''; } tblrow += ''; return tblrow; } // chkbox 전체 선택 function wini_chkAll(obj) { var chkval = $("#"+obj.id).is(':checked'); //alert($("input[name='wini_gridmultselect']").length); $("input[name='"+obj.id+"row']").each( function() { //alert(this.checked); this.checked = chkval; //$("input[name="+colid+"]:checkbox:eq("+trid+")").val(); } ) } // 행 삭제 function deleRow(tbl) { $("#"+tbl+ " tr").remove(); } // 행 클릭시 backgroud color function winigrid_trbackground(tblid, nRow) { var headcnt = winigrdi_gettitleheadcnt(tblid); // 타이틀 해더 수 nRow = Number(nRow) + headcnt; // 해더수만큼 더해줘야 for (var i = headcnt; i < $("#"+tblid+ " tr").length; i++) { if (i == nRow) $("#"+tblid+ " tr:eq("+nRow+")").addClass("onSelected"); else $("#"+tblid+ " tr:eq("+i+")").removeClass("onSelected"); } } //행 클릭시 backgroud color function winigrid_trbackground_body(tblid, nRow) { nRow = Number(nRow); // 해더수만큼 더해줘야 for (var i = 0; i < $("#"+tblid+ "_body tr").length; i++) { if (i == nRow) { $("#"+tblid+ "_body tr:eq("+nRow+")").css("backgroundColor", winigrid_ClickColor) //.addClass("onSelected"); winigrid_ClickColor = $("#"+tblid+ "_body tr:eq("+nRow+")").css("backgroundColor"); // 브라우저마다 표현형식이 달라서.. } else { $("#"+tblid+ "_body tr:eq("+i+")").css("backgroundColor", winigrid_DefaultColor) //.removeClass("onSelected"); } } } function winigrid_mouseover(tblid, nRow) { var headcnt = winigrdi_gettitleheadcnt(tblid); // 타이틀 해더 수 nRow = Number(nRow) + headcnt; // 해더수만큼 더해줘야 /* $("#"+tblid+ " tr").each( function() { this.className = "onMouseOut"; } ) */ for (var i = headcnt; i < $("#"+tblid+ " tr").length; i++) { $("#"+tblid+ " tr:eq("+i+")").removeClass("onMouseOver"); $("#"+tblid+ " tr:eq("+i+")").removeClass("onMouseOut"); if (i == nRow) $("#"+tblid+ " tr:eq("+i+")").addClass("onMouseOver"); else $("#"+tblid+ " tr:eq("+i+")").addClass("onMouseOut"); } //var obj = $("#"+tblid+ " tr:eq("+nRow+")").addClass("onMouseOver"); } function winigrid_mouseover_body(tblid, nRow) { nRow = Number(nRow); // 해더수만큼 더해줘야 for (var i = 0; i < $("#"+tblid+ "_body tr").length; i++) { if (i == nRow) { if ($("#"+tblid+ "_body tr:eq("+i+")").css("backgroundColor") != winigrid_ClickColor) $("#"+tblid+ "_body tr:eq("+i+")").css("backgroundColor", winigrid_OverColor); } else { if ($("#"+tblid+ "_body tr:eq("+i+")").css("backgroundColor") != winigrid_ClickColor) $("#"+tblid+ "_body tr:eq("+i+")").css("backgroundColor", winigrid_DefaultColor); } } } function winigrid_mouseout(tblid, nRow) { var headcnt = winigrdi_gettitleheadcnt(tblid); // 타이틀 해더 수 nRow = Number(nRow) + headcnt; // 해더수만큼 더해줘야 for (var i = headcnt; i < $("#"+tblid+ " tr").length; i++) { if (i == nRow) $("#"+tblid+ " tr:eq("+i+")").removeClass("onMouseOver"); } } function winigrid_mouseout_body(tblid, nRow) { nRow = Number(nRow); // 해더수만큼 더해줘야 return; for (var i = 0; i < $("#"+tblid+ "_body tr").length; i++) { if (i == nRow) $("#"+tblid+ "_body tr:eq("+i+")").css("backgroundColor","#f3f3f3"); //.removeClass("onMouseOver"); } } //페이징 function getPaging(grid_type, results){ var pager = grid_type.pager var current_page = grid_type.page var total_page = results.total; var rowcnt = grid_type.rowNum; var list_url = grid_type.pagerurl; $("#"+pager).html("") if (total_page < 1) return; var pagenumber; // 화면에 보여질 페이지 인덱스 수 var startpage = 0; // 화면에 보여질 시작페이지 번호 var endpage = 0; // 화면에 보여질 마지막페이지 번호 var curpage; // 이동하고자 하는 페이지 번호 var strList=""; // 리턴될 페이지 인덱스 리스트 var tmp = ""; pagenumber = 10; // 한 화면의 페이지 인덱스 수 startpage = Math.floor(((current_page - 1) / pagenumber)) * pagenumber + 1; endpage = (((startpage - 1) + pagenumber) / pagenumber) * pagenumber; // 총 페이지 수가 계산된 마지막페이지 번호보다 작을경우 // 총 페이지 수가 마지막페이지 번호가 됨 if (total_page <= endpage) { endpage = total_page; } $("#"+pager).addClass("paginate"); //strList = strList +''; strList = strList + ''; if ( current_page != 1) { curpage = 1; // 처음목록 tmp = 'onClick="'+list_url+'('+curpage+');" class="wini_click"'; } strList = strList + '처음목록'; tmp = ""; // 첫번째 페이지 인덱스 화면이 아닌경우 strList = strList + ''; if ( current_page > pagenumber) { curpage = startpage - 1; // 시작페이지 번호보다 1 적은 페이지로 이동 tmp = 'onClick="'+list_url+'('+curpage+');" class="wini_click"'; } strList = strList + '이전목록'; curpage = startpage; //alert(curpage); while (curpage <= endpage){ if (curpage == current_page) { //strList = strList +''; strList = strList +' '+current_page+' '; } else { //strList = strList +''; strList = strList +' '+curpage+''; } curpage++; if (curpage <= endpage) { strList = strList +""; } } // 뒤에 페이지가 더 있는경우 tmp = ""; strList = strList + ''; tmp = ""; strList = strList + ''; if ( current_page != total_page) { curpage = total_page; // 마지막목록 tmp = 'onClick="'+list_url+'('+curpage+');" '; } strList = strList + '마지막목록'; // strList = strList + " ... "; // 페이지 뷰 꾸미기 테이블 끝맺음. strList = strList +"
'+current_page+''+curpage+'
"; //alert(strList); $("#"+pager).html(strList); } //페이징 table Version function getPaging_table(grid_type, results){ var pager = grid_type.pager var current_page = grid_type.page var total_page = results.total; var rowcnt = grid_type.rowNum; var list_url = grid_type.pagerurl; $("#"+pager).html("") if (total_page < 1) return; var pagenumber; // 화면에 보여질 페이지 인덱스 수 var startpage = 0; // 화면에 보여질 시작페이지 번호 var endpage = 0; // 화면에 보여질 마지막페이지 번호 var curpage; // 이동하고자 하는 페이지 번호 var strList=""; // 리턴될 페이지 인덱스 리스트 var tmp = ""; pagenumber = 10; // 한 화면의 페이지 인덱스 수 startpage = Math.floor(((current_page - 1) / pagenumber)) * pagenumber + 1; endpage = (((startpage - 1) + pagenumber) / pagenumber) * pagenumber; // 총 페이지 수가 계산된 마지막페이지 번호보다 작을경우 // 총 페이지 수가 마지막페이지 번호가 됨 if (total_page <= endpage) { endpage = total_page; } $("#"+pager).addClass("wini_gridpaing"); strList = strList +''; strList = strList + "'; tmp = ""; // 첫번째 페이지 인덱스 화면이 아닌경우 strList = strList + "'; curpage = startpage; //alert(curpage); while (curpage <= endpage){ if (curpage == current_page) { strList = strList +''; } else { strList = strList +''; } curpage++; if (curpage <= endpage) { strList = strList +""; } } // 뒤에 페이지가 더 있는경우 tmp = ""; strList = strList + "'; tmp = ""; strList = strList + "'; // strList = strList + " ... "; // 페이지 뷰 꾸미기 테이블 끝맺음. strList = strList +"
"; if ( current_page != 1) { curpage = 1; // 처음목록 tmp = 'onClick="'+list_url+'('+curpage+');" class="wini_click"'; } strList = strList + '처음목록"; if ( current_page > pagenumber) { curpage = startpage - 1; // 시작페이지 번호보다 1 적은 페이지로 이동 tmp = 'onClick="'+list_url+'('+curpage+');" class="wini_click"'; } strList = strList + '이전목록'+current_page+''+curpage+'"; if ( total_page > endpage) { curpage = endpage + 1; tmp = 'onClick="'+list_url+'('+curpage+');" class="wini_click"'; } strList = strList + '다음목록"; if ( current_page != total_page) { curpage = total_page; // 마지막목록 tmp = 'onClick="'+list_url+'('+curpage+');" class="wini_click"'; } strList = strList + '마지막목록
"; //alert(strList); $("#"+pager).html(strList); } //선택한 Row 의 object 반환 function winigrid_getRowData(tblid, nRow) { nRow = Number(nRow); // 해더수만큼 더해줘야 var obj = $("#"+tblid+"_body tr:eq("+nRow+")"); return obj; } //grid 내 값알아냄 function getwinigridRowValue(obj, colid) { var trid = obj.attr("id"); var tdid = ""; var tdtext = ""; $(obj.children()).each( function() { if (this.id == "_"+colid) { tdtext = this.innerHTML if (tdtext.toUpperCase().indexOf("= 0) { if (tdtext.toUpperCase().indexOf("CHECKBOX") >= 0) { tdtext = $("input[name="+colid+"]:checkbox:eq("+trid+")").val(); } else if (tdtext.toUpperCase().indexOf("RADIO") >= 0) { tdtext = $("input[name="+colid+"]:radio:eq("+trid+")").val(); } else { tdtext = $("#"+colid+trid).val(); } } } } ) return tdtext; } //grid 내 tr this Object 로 값알아냄 function getwinigridRowValue2(obj, colid) { var trid = obj.id; var tdid = ""; var tdtext = ""; for (var i = 0; i < obj.childNodes.length; i++) { tdid = obj.childNodes[i].id; if (obj.childNodes[i].id == "_"+colid) { tdtext = obj.childNodes[i].innerHTML; //alert(tdtext); if (tdtext.toUpperCase().indexOf("= 0) { if (tdtext.toUpperCase().indexOf("CHECKBOX") >= 0) { tdtext = $("input[name="+colid+"]:checkbox:eq("+trid+")").val(); } else if (tdtext.toUpperCase().indexOf("RADIO") >= 0) { tdtext = $("input[name="+colid+"]:radio:eq("+trid+")").val(); } else { tdtext = $("#"+colid+trid).val(); } } break; } } return tdtext; } //grid 내 값변경 function setwinigridRowValue(obj, colid, val) { var trid = obj.attr("id"); $(obj.children()).each( function() { if (this.id == "_"+colid) { this.innerHTML = val; } } ) } //체크된 chkbox index function getselectchk(tblid, chkval) { var chkrow = []; var i = 0; var k = 0; //alert($("input[name='wini_gridmultselect']").length); $("input[name='"+tblid+"_chkrow']").each( function() { if (this.checked == chkval) { chkrow[i] = k; i++; } k++; } ) return chkrow; } //헤드 병합 function winigrid_mergeHead_header(grid_type) { var headcnt = winigrdi_gettitleheadcnt(grid_type.tableid); var tblid = grid_type.tableid+"_header"; var tbl = document.getElementById(tblid); var rows = tbl.getElementsByTagName("tr")[0]; var collen = rows.getElementsByTagName("th").length; for(var i = 0; i < collen; i++) { // row 병합 winigrid_head_mergeCell(tblid, i, 0, headcnt); } for(var i = 0; i < headcnt; i++) {// col 병합 winigrid_head_mergeCell2(tblid, i, 0, -1); } } //해더 row 병합 function winigrid_head_mergeCell(tblid, cellIdx, startRowIdx, endRowIdx) { var tbl = document.getElementById(tblid); var rows = tbl.getElementsByTagName("tr"); var numRows = endRowIdx; var numRowSpan = 1; var currentRow = null; var currentCell = null; var currentCellData = null; var nextRow = null; var nextCell = null; var nextCellData = null; if (endRowIdx == null || endRowIdx == 0) numRows = rows.length; for (var i = startRowIdx; i < (numRows-1); i++) { if(numRowSpan <= 1) { currentRow = tbl.getElementsByTagName("tr")[i]; currentCell = currentRow.getElementsByTagName("th")[cellIdx]; currentCellData = currentCell.childNodes[0].data; } if (i < numRows-1) { if (tbl.getElementsByTagName("tr")[i+1]) { nextRow = tbl.getElementsByTagName("tr")[i+1]; nextCell = nextRow.getElementsByTagName("th")[cellIdx]; nextCellData = nextCell.childNodes[0].data; if (currentCellData == nextCellData) { numRowSpan += 1; currentCell.rowSpan = numRowSpan; nextCell.style.display = 'none'; } else { numRowSpan = 1; } } } } } // 해더 col 병합 function winigrid_head_mergeCell2(tblid, cellIdx, startColIdx, endColIdx) { var tbl = document.getElementById(tblid); var cols = tbl.getElementsByTagName("tr")[cellIdx].getElementsByTagName("th"); var numCols = endColIdx; var numColSpan = 1; var currentCol = null; var currentCell = null; var currentCellData = null; var currentCellWidth = null; var nextCol = null; var nextCell = null; var nextCellData = null; var nextCellWidth = null; if (endColIdx == null || endColIdx == -1) numCols = cols.length-1; //alert("numCols="+startColIdx+"... numCols="+numCols); for (var i = startColIdx; i < numCols; i++) { if(numColSpan <= 1) { currentCol = tbl.getElementsByTagName("tr")[cellIdx]; currentCell = currentCol.getElementsByTagName("th")[i]; currentCellData = currentCell.childNodes[0].data; currentCellWidth = currentCell.style.width; currentCellWidth = currentCellWidth.replace("px", ""); } //alert(i+"//"+currentCellData); if (i < numCols) { if (tbl.getElementsByTagName("tr")[cellIdx].getElementsByTagName("th")[i+1]) { nextCol = tbl.getElementsByTagName("tr")[cellIdx]; nextCell = nextCol.getElementsByTagName("th")[i+1]; nextCellData = nextCell.childNodes[0].data; nextCellWidth = nextCell.style.width; nextCellWidth = nextCellWidth.replace("px", ""); if (currentCellData == nextCellData) { numColSpan += 1; currentCell.colSpan = numColSpan; nextCell.style.display = 'none'; var c_width = currentCell.style.width; currentCell.style.width = (Number(c_width.replace("px", ""))+Number(nextCellWidth))+"px"; } else { numColSpan = 1; } } } } } /**************************************************** tblid : 병합할 대상 table object id cellIdx : 병합 row 번호 startColIdx : 병합 시작 col 번호 endColIdx : 병합 끝 col 번호(0이거나 null이면 끝) *****************************************************/ function winigrid_mergeCell2(tblid, cellIdx, startColIdx, endColIdx) { var tbl = document.getElementById(tblid); var cols = tbl.getElementsByTagName("tr")[cellIdx].getElementsByTagName("td"); var numCols = endColIdx; var numColSpan = 1; var currentCol = null; var currentCell = null; var currentCellData = null; var currentCellWidth = null; var nextCol = null; var nextCell = null; var nextCellData = null; var nextCellWidth = null; if (endColIdx == null || endColIdx == -1) numCols = cols.length-1; //alert("numCols="+startColIdx+"... numCols="+numCols); for (var i = startColIdx; i < numCols; i++) { if(numColSpan <= 1) { currentCol = tbl.getElementsByTagName("tr")[cellIdx]; currentCell = currentCol.getElementsByTagName("td")[i]; currentCellData = currentCell.childNodes[0].data; currentCellWidth = currentCell.style.width; currentCellWidth = currentCellWidth.replace("px", ""); } //alert(i+"//"+currentCellData); if (i < numCols) { if (tbl.getElementsByTagName("tr")[cellIdx].getElementsByTagName("td")[i+1]) { nextCol = tbl.getElementsByTagName("tr")[cellIdx]; nextCell = nextCol.getElementsByTagName("td")[i+1]; nextCellData = nextCell.childNodes[0].data; nextCellWidth = nextCell.style.width; nextCellWidth = nextCellWidth.replace("px", ""); if (currentCellData == nextCellData) { numColSpan += 1; currentCell.colSpan = numColSpan; nextCell.style.display = 'none'; var c_width = currentCell.style.width; currentCell.style.width = (Number(c_width.replace("px", ""))+Number(nextCellWidth))+"px"; } else { numColSpan = 1; } } } } } //grid data 병합 body 이름인 경우 function winigrid_mergeCellAll_body(grid_type) { var tblid = grid_type.tableid+"_body"; for(var k = grid_type.datamerge[0]; k <= grid_type.datamerge[1]; k++) { // row 병합 winigrid_mergeCell(tblid, k, 0, 0); } var col_cnt = Number(grid_type.datamerge[1]) - Number(grid_type.datamerge[0]); for(var i = 0; i < col_cnt; i++) { // col 병합 winigrid_mergeCell2(tblid, i, grid_type.datamerge[0], grid_type.datamerge[1]); } } /****************************************************" + //====== row 병합 ====== tblid : 병합할 대상 table object id cNum : 병합 col 번호 startRow : 병합 시작 row 번호 endRow : 병합 끝 row 번호(0이거나 null이면 끝) *****************************************************/ function winigrid_mergeCell(tblid, cellIdx, startRowIdx, endRowIdx) { var tbl = document.getElementById(tblid); var rows = tbl.getElementsByTagName("tr"); var numRows = endRowIdx; var numRowSpan = 1; var currentRow = null; var currentCell = null; var currentCellData = null; var nextRow = null; var nextCell = null; var nextCellData = null; if (endRowIdx == null || endRowIdx == 0) numRows = rows.length; for (var i = startRowIdx; i < (numRows-1); i++) { if(numRowSpan <= 1) { currentRow = tbl.getElementsByTagName("tr")[i]; currentCell = currentRow.getElementsByTagName("td")[cellIdx]; if(currentCell.childNodes[0] != null) currentCellData = currentCell.childNodes[0].data; } if (i < numRows-1) { if (tbl.getElementsByTagName("tr")[i+1]) { nextRow = tbl.getElementsByTagName("tr")[i+1]; nextCell = nextRow.getElementsByTagName("td")[cellIdx]; if(nextCell.childNodes[0] != null) { nextCellData = nextCell.childNodes[0].data; if (currentCellData == nextCellData) { numRowSpan += 1; currentCell.rowSpan = numRowSpan; nextCell.style.display = 'none'; } else { numRowSpan = 1; } } } } } } function wini_combo_law_addr(setvalue, law_cd, gubun, f_line, defalut_yn){ // alert(setvalue + "============" + law_cd); var law_gugun_cd = "#lawGugunCd"; var make_combo = law_gugun_cd; var defalut_nm = ""; if (law_cd == "Gugun") { $(law_gugun_cd).empty(); if (defalut_yn == "Y") { $(law_gugun_cd).append(defalut_nm); } // lawSidoCd = ""+$(law_sido_cd).val(); } $.ajax({ url:"../common/searchRoadAddress.do", type:"POST", dataType:"json", data:{"lawSidoCd":setvalue}, async:false, success:function(data,textStatus){ for(var i=0; i < data.rows.length ; i++) { $(make_combo).append(""); } if (setvalue == "" ) { $(make_combo+" option:eq(0)").attr("selected", "selected"); } else { $(make_combo).val(setvalue); var scroll_height = $(make_combo).prop('scrollHeight'); // 셀렉트박스의 스크롤 길이 var this_count = $(make_combo + " option").size(); // 셀렉트박스의 count var this_height = scroll_height/this_count; var i = 0; $(make_combo + " option").each( function(){ if( $(this).attr('selected') == 'selected' ) { var tst = Math.round(this_height*i); //이동될 스크롤 계산 $(this).attr("selected", "selected"); $(make_combo).scrollTop( tst ); return false; } i++; }); } } }); } //====== row 병합 해제 ====== function winigrid_NomergeCell(tblid, cellIdx, startRowIdx, endRowIdx) { var tbl = document.getElementById(tblid); var rows = tbl.getElementsByTagName("tr"); var numRows = endRowIdx; var numRowSpan = 1; var currentRow = null; var currentCell = null; var currentCellData = null; var nextRow = null; var nextCell = null; var nextCellData = null; if (endRowIdx == null || endRowIdx == 0) numRows = rows.length; for (var i = startRowIdx; i < (numRows-1); i++) { if(numRowSpan <= 1) { currentRow = tbl.getElementsByTagName("tr")[i]; currentCell = currentRow.getElementsByTagName("td")[cellIdx]; //currentCellData = currentCell.childNodes[0].data; } if (i < numRows-1) { if (tbl.getElementsByTagName("tr")[i+1]) { nextRow = tbl.getElementsByTagName("tr")[i+1]; nextCell = nextRow.getElementsByTagName("td")[cellIdx]; //nextCellData = nextCell.childNodes[0].data; if (currentCellData == nextCellData) { //numRowSpan += 1; if (currentCell.rowSpan > 1) currentCell.rowSpan = 1; nextCell.style.display = ''; //alert(i); } else { numRowSpan = 1; } } } } } function get_detail(ajax_set) { $.ajax({ type: "POST", url: ajax_set.url, data: ajax_set.param, processData: false, dataType: 'json', success: ajax_set.return_fn }); } function do_submitIUD(ajax_set) { $(ajax_set.form_name).ajaxSubmit({ type:"POST", dataType:'json', url:ajax_set.url, success:ajax_set.return_fn }); } function PointerSetting() { $('img').each(function(){ if($(this).attr('disabled')){ $(this).css('cursor','default'); } else{ $(this).css('cursor','pointer'); } }); } //콤보박스 생성(2단계콤보) function wini_makeSelectBox(ajax_set) { var bl = false; if(ajax_set.cd1 ==""||ajax_set.cd1 ==null) { $(ajax_set.selectobj).empty(); $(ajax_set.selectobj).append(""); }else{ $.ajax({ url:ajax_set.url, type:"POST", dataType:"json", data:{"first_name":ajax_set.firstitem,"cd1":ajax_set.cd1}, async:bl, success:function(data,textStatus) { $(ajax_set.selectobj).empty(); for(var i=0; i < data.length ; i++) { $(ajax_set.selectobj).append(""); } $(ajax_set.selectobj).val(ajax_set.selectitem); } }); } } //콤보박스 생성(3단계콤보) function wini_makeSelectBox3(ajax_set) { var bl = false; if(ajax_set.cd1 ==""||ajax_set.cd1 ==null) { $(ajax_set.selectobj).empty(); $(ajax_set.selectobj).append(""); }else{ $.ajax({ url:ajax_set.url, type:"POST", dataType:"json", data:{"first_name":ajax_set.firstitem,"cd1":ajax_set.cd1,"cd2":ajax_set.cd2}, async:bl, success:function(data,textStatus) { $(ajax_set.selectobj).empty(); for(var i=0; i < data.length ; i++) { $(ajax_set.selectobj).append(""); } $(ajax_set.selectobj).val(ajax_set.selectitem); } }); } } //콤보박스 생성(4단계콤보) function wini_makeSelectBox4(ajax_set) { var bl = false; //alert(ajax_set.cd1); //alert(ajax_set.cd2); //alert(ajax_set.cd3); if(ajax_set.cd1 ==""||ajax_set.cd1 ==null) { $(ajax_set.selectobj).empty(); $(ajax_set.selectobj).append(""); }else{ $.ajax({ url:ajax_set.url, type:"POST", dataType:"json", data:{"first_name":ajax_set.firstitem,"cd1":ajax_set.cd1,"cd2":ajax_set.cd2,"cd3":ajax_set.cd3}, async:bl, success:function(data,textStatus) { $(ajax_set.selectobj).empty(); for(var i=0; i < data.length ; i++) { $(ajax_set.selectobj).append(""); } $(ajax_set.selectobj).val(ajax_set.selectitem); } }); } } // 달력 버튼 공통 변수 var wini_objectCalendar = { showMonthAfterYear : true, //상단부에 연도/달 출력 순서 지정(true or false ) showButtonPanel: true, //하단에 Today(오늘) Close(닫기) 패널추가(true or false ) changeMonth: true, //Month를 콤보박스로 선택할 수 있게 만듬(true or false ) changeYear: true, //Year를 콤보박스로 선택할수 있게 만듬(true or false ) showOn: 'button', //버튼 클릭 이벤트 추가 / 버튼클릭시 Calendar load buttonImage: '../images/btn_calendar.gif', //이미지 경로 buttonImageOnly: true, //버튼을 이미지로만 출력( true or false ) numberOfMonths: 1 //출력되는 Calendar 수 }; //== @param value 계산하고자 하는 날짜 //== @return 계산 된 날짜 //== @type String //== @constructor function wini_cal_setValue(value, dayvalue) { var date = new Date(); if(value == 0) // 오늘 { var ty = date.getFullYear(); var tm = date.getMonth()+1; var td = date.getDate(); if(tm<10) tm = "0" + tm; if(td<10) td = "0" + td; return ty +"-"+ tm +"-"+ td; } else if(value == 1) // 하루 전 { date.setTime(date.getTime() - (24 * 60 * 60 * 1000)); var ty = date.getFullYear(); var tm = date.getMonth()+1; var td = date.getDate(); if(tm<10) tm = "0" + tm; if(td<10) td = "0" + td; return ty +"-"+ tm +"-"+ td; } else if(value == 2) // 한달 전 { newDate = new Date(date.getFullYear(), date.getMonth()-1, date.getDate()); var ty = newDate.getFullYear(); var tm = newDate.getMonth()+1; var td = newDate.getDate(); if(tm<10) tm = "0" + tm; if(td<10) td = "0" + td; return ty +"-"+ tm +"-"+ td; } else if(value == 3) // 이번 달 1일 { var ty = date.getFullYear(); var tm = date.getMonth()+1; if(tm<10) tm = "0" + tm; return ty +"-"+ tm +"-"+ "01"; } else if(value == 4) // 저번 달 1일 { newDate = new Date(date.getFullYear(), date.getMonth()-1, date.getDate()); var ty = newDate.getFullYear(); var tm = newDate.getMonth()+1; if(tm<10) tm = "0" + tm; return ty +"-"+ tm +"-"+ "01"; } else if(value == 9) // 받아온 dayvalue 날짜의 전일 또는 후일 (예: 10일전 = -10, 10일후 = 10) { date.setTime(date.getTime() + (dayvalue * 24 * 60 * 60 * 1000)); var ty = date.getFullYear(); var tm = date.getMonth()+1; var td = date.getDate(); if(tm<10) tm = "0" + tm; if(td<10) td = "0" + td; return ty +"-"+ tm +"-"+ td; } } /** * 시작일 종료일 달력 셋팅 */ function wini_com_set_datepickStartEnd(txtNmStart, txtNmEnd, defaultDayStart, defaultDayEnd, chk){ jQuery.datepicker.setDefaults({ showMonthAfterYear : true, //상단부에 연도/달 출력 순서 지정(true or false ) showButtonPanel: true, //하단에 Today(오늘) Close(닫기) 패널추가(true or false ) changeMonth: true, //Month를 콤보박스로 선택할 수 있게 만듬(true or false ) changeYear: true, //Year를 콤보박스로 선택할수 있게 만듬(true or false ) showOn: 'button', //버튼 클릭 이벤트 추가 / 버튼클릭시 Calendar load buttonImage: winigrid_ContextRoot+'/images/btn_calendar.gif', //이미지 경로 buttonImageOnly: true, //버튼을 이미지로만 출력( true or false ) numberOfMonths: 1 //출력되는 Calendar 수 }); jQuery("#"+txtNmEnd).datepicker({ onSelect: function(date) { if(jQuery("#"+txtNmStart).val() > jQuery("#"+txtNmEnd).val()) { alert('시작날짜보다 이전 일자입니다.'); jQuery("#"+txtNmEnd).val(jQuery("#"+txtNmStart).val()); } } }); jQuery("#"+txtNmStart).datepicker({ onSelect: function(date) { if(jQuery("#"+txtNmEnd+"Day").val() != '') { if(jQuery("#"+txtNmStart).val() > jQuery("#"+txtNmEnd).val()) { // alert('시작날짜가 종료날짜보다 이후 일자입니다. \n 종료날짜가 시작일짜로 수정됩니다.'); jQuery("#"+txtNmEnd).val(jQuery("#"+txtNmStart).val()); } } } }); if (chk) { $("#"+txtNmStart).blur(function(){ wini_myDateChk(this, 'yyyymmdd');}); $("#"+txtNmEnd).blur(function(){ wini_myDateChk(this, 'yyyymmdd');}); } if (defaultDayStart != "") { $("#"+txtNmStart).val(wini_cal_setValue(Number(defaultDayStart), "")); } if (defaultDayEnd != "") { $("#"+txtNmEnd).val(wini_cal_setValue(Number(defaultDayEnd), "")); } } // 숫자체크 function wini_numCheck(obj, type) { var strr = "0123456789"; if (type == 1) { strr = strr + "-+"; } else if (type == 2) { strr = strr + "."; } else if (type == 3) { strr = strr + "-+."; } else if (type == 4) { strr = strr + "-"; } var Number_Value = obj.value; for (i = 0; i < Number_Value.length; i++) { for (j = 0; j < strr.length; j++) { if (Number_Value .charAt(i) == strr.charAt(j)) break; } if (j == strr.length) { obj.value = ""; alert("숫자만 입력가능합니다."); return; } } return; } //날짜체크 함수 function wini_myDateChk(obj, type){ var valueDate = ""; var tmpDate = obj.value.replace(/-/g,"").replace(/\,/g,"").replace(/\./g,""); wini_numCheck(obj,4);// 숫자 체크 if(obj.value == ""){ return; } var len = tmpDate.length; if(len != type.length && obj.value != ""){ alert("날짜의 입력이 잘못되었습니다."); obj.value = ""; return; } //alert(Number(tmpDate)); var yyyy = ""; var mm = ""; var dd = ""; if(type == "yyyymmdd"){ yyyy = tmpDate.substring(0,4); mm = tmpDate.substring(4,6); dd = tmpDate.substring(6,8); } else if(type == "yyyymm"){ yyyy = tmpDate.substring(0,4); mm = tmpDate.substring(4,6); } else if(type == "yyyy"){ yyyy = tmpDate; } else if(type == "mm"){ mm = tmpDate; } else{ } if(yyyy != ""){ if(Number(yyyy) < 1000 ){ alert("년도는 1000년 이후를 입력하셔야 합니다."); obj.value = ""; return; } else{ // 정상 if(mm != ""){ valueDate = yyyy+"-"; } else{ valueDate = yyyy; } } } if(mm != ""){ var d1 = ""; var d2 = ""; if(dd=="" && (mm=="01"||mm=="02"||mm=="03"||mm=="04"||mm=="05"||mm=="06"|| mm=="07"||mm=="08"||mm=="09"||mm=="10"||mm=="11"||mm=="12")){ // 정상 valueDate += mm; } else if(dd!="" && (mm=="01"||mm=="02"||mm=="03"||mm=="04"||mm=="05"||mm=="06"|| mm=="07"||mm=="08"||mm=="09"||mm=="10"||mm=="11"||mm=="12")){ if(mm=="01"||mm=="03"||mm=="05"||mm=="07"||mm=="08"||mm=="10"||mm=="12"){ d1 = dd.substring(0,1); d2 = dd.substring(1,2); if(d1 == "0" && (Number(d2) > 0 && Number(d2) < 10)){ // 정상 valueDate += mm+"-"+dd; } else if(d1 != "0" && (Number(dd) > 9 && Number(dd) <= 31)){ // 정상 valueDate += mm+"-"+dd; } else{ alert("날짜의 입력이 잘못되었습니다."); obj.value = ""; return; } } if(mm=="04"||mm=="06"||mm=="09"||mm=="11"){ d1 = dd.substring(0,1); d2 = dd.substring(1,2); if(d1 == "0" && (Number(d2) > 0 && Number(d2) < 10)){ // 정상 valueDate += mm+"-"+dd; } else if(d1 != "0" && (Number(dd) > 9 && Number(dd) <= 30)){ // 정상 valueDate += mm+"-"+dd; } else{ alert("날짜의 입력이 잘못되었습니다."); obj.value = ""; return; } } if(mm=="02"){ d1 = dd.substring(0,1); d2 = dd.substring(1,2); if(d1 == "0" && (Number(d2) > 0 && Number(d2) < 10)){ // 정상 valueDate += mm+"-"+dd; } else if(d1 != "0" && getLeapYearYN(yyyy)=="Y"){ if(Number(dd) > 9 && Number(dd) <= 29){ // 정상 valueDate += mm+"-"+dd; } else{ alert("날짜의 입력이 잘못되었습니다."); obj.value = ""; return; } } else if(d1 != "0" && getLeapYearYN(yyyy)=="N"){ if(Number(dd) > 9 && Number(dd) <= 28){ // 정상 valueDate += mm+"-"+dd; } else{ alert("날짜의 입력이 잘못되었습니다."); obj.value = ""; return; } } else{ alert("날짜의 입력이 잘못되었습니다."); obj.value = ""; return; } } } else{ alert("날짜의 입력이 잘못되었습니다."); obj.value = ""; return; } } obj.value = valueDate; return; } //== 윤년계산 //== 년도를 스트링으로 받아서 윤년여부를 YN으로 리턴한다. //== setDateOnKeyDown(obj, evt)에서 호출하여 사용한다. function getLeapYearYN(year){ var tmp4 = Number(year)%4; var tmp100 = Number(year)%100; var tmp400 = Number(year)%400; // 년도롤 4로 나누어 떨어지면 윤년 // 년도를 100 으로 나누어 떨어지면 평년이지만 400으로 나누어 떨어지면 윤년으로 한다. if(tmp4 == 0 || tmp400 == 0 ){ if(tmp100 == 0 && tmp400 != 0 ){ return "N"; }else{ return "Y"; } }else{ return "N"; } } // 조회중입니다 표시 function view_searching(onoff, top_point) { if ($("#search_ing_layer").length > 0) { if (top_point != null || top_point != '') { $("#search_ing_layer").css("top", top_point); } if (onoff == "ON") { $("#search_ing_layer").removeClass("wini_displayhidden"); } else { $("#search_ing_layer").addClass("wini_displayhidden"); } } } /************************************************************** * * @param obj : this (고정) * @param type : int => 정수(소수 입력 안 됨) / -int => -정수(소수 입력 안 됨) / float => 실수(소수 입력 가능) / -float => -실수 (소수 입력 가능) * @param tlen : tlen => 총 자리수 (정수 입력 시 tlen에서 flen 뺀 결과가 정수자리수) * @param flen : 소수 자리수 (~까지) * @param comma : Y => 세자리마다 콤마(,) 자동입력 N => 콤마 미적용 * @return * ***************************************************************/ function check_number(obj, type, tlen, flen, comma){ var returnVal = String(obj.value); var regexp = /[^-\.0-9]/g; var repexp = ""; var len = 2; var ilen = 0; if(flen != undefined){ len = flen; } ilen = tlen - flen; returnVal = returnVal.replace(regexp, repexp); if(returnVal.split(".").length > 1){ returnVal = returnVal.split(".")[0].substr(0,ilen) + "." + returnVal.split(".")[1].substr(0, len); }else{ returnVal = returnVal.substring(0,ilen); } switch(type){ case "int" : regexp = /[^0-9]/g; break; case "float" : regexp = /^(-?)([0-9]*)(\.?)([^0-9]*)([0-9]*)([^0-9]*)/; break; case "-int" : regexp = /^(-?)([0-9]*)([^0-9]*)([0-9]*)([^0-9]*)/; break; case "-float" : regexp = /^(-?)([0-9]*)(\.?)([^0-9]*)([0-9]*)([^0-9]*)/; break; default : regexp = /[^0-9]/g; break; } switch(type){ case "int" : repexp = ""; break; case "float" : repexp = "$2$3$5"; break; case "-int" : repexp = "$1$2$4"; break; case "-float" : repexp = "$1$2$3$5"; break; default : repexp = /[^0-9]/g; break; } returnVal = returnVal.replace(regexp, repexp); if(comma == "Y"){ var str = "" + returnVal.replace(/,/gi,''); var regx = new RegExp(/(-?\d+)(\d{3})/); var bExists = str.indexOf(".",0); var strArr = str.split('.'); while(regx.test(strArr[0])){ strArr[0] = strArr[0].replace(regx,"$1,$2"); } if (bExists > -1){ obj.value = strArr[0] + "." + strArr[1]; }else{ obj.value = strArr[0]; } }else{ obj.value = returnVal; } } /******************************************************************************** * 체크된 값에 한해서 넘기기 *********************************************************************************/ function wini_get_chkboxvalue(objid) { var value = ""; if($(objid).attr("checked")==true) value = $(objid).val(); return value; } //날짜체크 함수(날짜값을 바로받아와서 체크) function wini_myDateValueChk(val, type){ var valueDate = ""; var tmpDate = val.replace(/-/g,"").replace(/\,/g,"").replace(/\./g,""); if(tmpDate == ""){ return false; } var len = tmpDate.length; if(len != type.length && tmpDate != ""){ alert("날짜의 입력이 잘못되었습니다."); return false; } //alert(Number(tmpDate)); var yyyy = ""; var mm = ""; var dd = ""; if(type == "yyyymmdd"){ yyyy = tmpDate.substring(0,4); mm = tmpDate.substring(4,6); dd = tmpDate.substring(6,8); } else if(type == "yyyymm"){ yyyy = tmpDate.substring(0,4); mm = tmpDate.substring(4,6); } else if(type == "yyyy"){ yyyy = tmpDate; } else if(type == "mm"){ mm = tmpDate; } else{ } if(yyyy != ""){ if(Number(yyyy) < 1000 ){ alert("년도는 1000년 이후를 입력하셔야 합니다."); return false; } else{ // 정상 if(mm != ""){ valueDate = yyyy+"-"; } else{ valueDate = yyyy; } } } if(mm != ""){ var d1 = ""; var d2 = ""; if(dd=="" && (mm=="01"||mm=="02"||mm=="03"||mm=="04"||mm=="05"||mm=="06"|| mm=="07"||mm=="08"||mm=="09"||mm=="10"||mm=="11"||mm=="12")){ // 정상 valueDate += mm; } else if(dd!="" && (mm=="01"||mm=="02"||mm=="03"||mm=="04"||mm=="05"||mm=="06"|| mm=="07"||mm=="08"||mm=="09"||mm=="10"||mm=="11"||mm=="12")){ if(mm=="01"||mm=="03"||mm=="05"||mm=="07"||mm=="08"||mm=="10"||mm=="12"){ d1 = dd.substring(0,1); d2 = dd.substring(1,2); if(d1 == "0" && (Number(d2) > 0 && Number(d2) < 10)){ // 정상 valueDate += mm+"-"+dd; } else if(d1 != "0" && (Number(dd) > 9 && Number(dd) <= 31)){ // 정상 valueDate += mm+"-"+dd; } else{ alert("날짜의 입력이 잘못되었습니다."); return false; } } if(mm=="04"||mm=="06"||mm=="09"||mm=="11"){ d1 = dd.substring(0,1); d2 = dd.substring(1,2); if(d1 == "0" && (Number(d2) > 0 && Number(d2) < 10)){ // 정상 valueDate += mm+"-"+dd; } else if(d1 != "0" && (Number(dd) > 9 && Number(dd) <= 30)){ // 정상 valueDate += mm+"-"+dd; } else{ alert("날짜의 입력이 잘못되었습니다."); return false; } } if(mm=="02"){ d1 = dd.substring(0,1); d2 = dd.substring(1,2); if(d1 == "0" && (Number(d2) > 0 && Number(d2) < 10)){ // 정상 valueDate += mm+"-"+dd; } else if(d1 != "0" && getLeapYearYN(yyyy)=="Y"){ if(Number(dd) > 9 && Number(dd) <= 29){ // 정상 valueDate += mm+"-"+dd; } else{ alert("날짜의 입력이 잘못되었습니다."); return false; } } else if(d1 != "0" && getLeapYearYN(yyyy)=="N"){ if(Number(dd) > 9 && Number(dd) <= 28){ // 정상 valueDate += mm+"-"+dd; } else{ alert("날짜의 입력이 잘못되었습니다."); return false; } } else{ alert("날짜의 입력이 잘못되었습니다."); return false; } } } else{ alert("날짜의 입력이 잘못되었습니다."); return false; } } return true; }