// 화면 연계 관련 함수들 var gvMyUIDPath = null; var gvOpUIDPath = null; var gvChUIDPath = null; var gvDate = null; var gvParamPath = null; var gvPropPath = null; var gvAuthPath = null; var gvTitlePath = null; var gvScnTypePath = null; var gvErrorMsgPath = null; var gvSystemPath = null; var gvMenuPath = null; var gvMenuGroupCdPath = null; var gvMenuPrestDeptCdPath = null; var gvMenuItemCdPath = null; var gvMenuParamPath = null; var gvSystemCd = null; //var gvMyCBOnClosePath = null; //var gvOpCBOnClosePath = null; // 레포트 연계 관련 var gvReportPath = null; var gvSubReportPath = null; var gvReportPropsPath = null; var gvReportParamsPath = null; var gvReportOptionsPath = null; //환자정보 연계 관련 var gvPatientInfoPath = null; var gvOperationInfoPath = null; var gvConsultInfoPath = null; var gvPatientInfoFlagPath = null; var gvOrderBasicInfoPath = null; //공통메뉴 관련 var gvPopupMenuPath = null; //온라인 도움말 관련 var gvHelpPage = null; // 화면정보 var gvTaskBarHeight = 34; // 작업표시줄 높이 var gvDefaultScrWidth = 1211; // 기본 nU 프로그램 화면 너비(캡션 & 보더 폭 제외) var gvDefaultScrHeight = 784; // 기본 nU 프로그램 화면 높이(캡션 & 보더 폭 제외) // 화면좌표저장여부 var gvSaveLoc = null; // 경북대 20101028 var fEssentialBackColor = "#ffe4b5"; // Date관련 String.prototype.toDate = toDate; Date.prototype.getDateFormat = getDateFormat; Date.prototype.getAddDate = getAddDate; Date.prototype.getDayOfWeek = getDayOfWeek; String.prototype.setReplaceWord = setReplaceWord; String.prototype.getTrim = getTrim; /** * @----------------------------------------------------------------------------------- * @desc : 폼이 로딩되고 스크립트엔진이 초기화 되며 실행되는 함수 * @param : * @return : * @----------------------------------------------------------------------------------- */ function xforms_model_construct() { gvPropPath="/root/properties"; gvMyUIDPath=gvPropPath+"/uid/myself"; gvOpUIDPath=gvPropPath+"/uid/opener"; gvChUIDPath=gvPropPath+"/uid/children/"; // gvMyCBOnClosePath=gvPropPath+"/callback/onclose/myself"; // gvOpCBOnClosePath=gvPropPath+"/callback/onclose/opener"; gvParamPath=gvPropPath+"/parameters"; gvChildClosePath=gvPropPath+"/childclose"; gvSystemPath=gvPropPath+"/domain"; gvAuthPath=gvPropPath+"/auth"; gvMenuPath=gvPropPath+"/menu"; gvMenuGroupCdPath=gvMenuPath+"/menugroupcd"; gvMenuPrestDeptCdPath=gvMenuPath+"/menuprestdeptcd"; gvMenuItemCdPath=gvMenuPath+"/menuitemcd"; gvMenuParamPath=gvMenuPath+"/menuparam"; gvTitlePath=gvPropPath+"/title"; gvScnTypePath=gvPropPath+"/stype"; gvErrorMsgPath=gvPropPath+"/error"; gvReportPath=gvPropPath+"/report/mainreport"; gvSubReportPath=gvPropPath+"/report/subreport"; gvReportPropsPath=gvReportPath+"/props"; gvReportParamsPath=gvReportPath+"/params"; gvReportOptionsPath=gvReportPath+"/options"; gvPatientInfoPath=gvPropPath+"/patient"; gvOperationInfoPath=gvPatientInfoPath+"/operationinfo"; gvConsultInfoPath=gvPatientInfoPath+"/consultinfo"; gvPatientInfoFlagPath=gvPatientInfoPath+"/patientflag"; gvOrderBasicInfoPath=gvPropPath+"/orderbasicinfo"; gvPopupMenuPath=gvPropPath+"/popupmenu"; gvSaveLocPath = gvPropPath + "/saveloc"; model.makeValue(gvSaveLocPath, "true"); // 화면의 UID 설정(생성시간을 사용) // window.load()는 xforms_model_construct() 후 리턴되므로 여기에서 uid를 설정해야함 gvDate = new Date(); var uid = gvDate.getTime(); model.makeValue(gvMyUIDPath,uid); model.makeValue(gvOpUIDPath,""); model.makeValue(gvSystemPath,""); } /** * @----------------------------------------------------------------------------------- * @desc : 폼이 로딩된 후 모든 초기화가 끝나고 폼이 화면에 표시된 이후에 발생(컨트롤에 접근가능) * @param : * @return : * @----------------------------------------------------------------------------------- */ function xforms_ready() { // 팝업메뉴 초기화 window.setPopupMenu(false); // 화면별 도움말key 설정 //지정된 컨트롤에 접근하기 위한 단축키를 설정할 수 있다. //기본적으로 accesskey 속성은 컨트롤에 onaccesskey 이벤트 발생 후 DOMActivate 이벤트를 Dispatch 한다. // 다른 화면에 포함된 iviewer 인 경우 accesskey 없앰(아니면 도움말이 여러번 뜨는 현상 발생 & 리포트도 iviewer 임(id:ivr_report) if(window.type != "iviewer") { body.attribute("accesskey") = "f12"; } } /** * @----------------------------------------------------------------------------------- * @desc : 시스템 코드를 반환한다. * @param : * @return : gvSystemCd * @----------------------------------------------------------------------------------- */ function getSystemCd() { if (gvSystemCd != null) { return gvSystemCd; } if (htmlwindow.systemcd == undefined) { gvSystemCd = ""; } else { gvSystemCd = new String(htmlwindow.systemcd); } return gvSystemCd; } /** * @----------------------------------------------------------------------------------- * @desc : 주어진 이름의 TF Viewer 객체를 반환한다. * @param : * @return : TF Viewer 명칭 * @----------------------------------------------------------------------------------- */ function getViewer(name) { //alert("aaaaa"); //[컴스퀘어][주석처리] 상위 OBJECT가 존재하지 않습니다. return null //return viewer.item(getSystemCd()+"_"+name); return null; } /** * @----------------------------------------------------------------------------------- * @desc : url로부터 화면ID를 얻어온다. url이 null이면 현재 화면의 url을 사용한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function getScreenID(url) { if (url == null) { url = document.url; } var sp = url.split("/"); return sp[sp.length-1].split(".")[0].substr(0,10); } /** * @----------------------------------------------------------------------------------- * @desc : 현재 화면의 UID 정보 * @param : * @return : 현재 화면의 UID를 리턴 * @----------------------------------------------------------------------------------- */ function getMyUID() { return model.getValue(gvMyUIDPath); } /** * @----------------------------------------------------------------------------------- * @desc : Opener의 UID 정보 * @param : * @return : Opener의 UID를 리턴, Opener가 없으면 "" 리턴 * @----------------------------------------------------------------------------------- */ function getOpenerUID() { return model.getValue(gvOpUIDPath); } /** * @----------------------------------------------------------------------------------- * @desc : child 윈도우의 UID 정보 * @param : wid : child 화면의 window id * @return : WID로 연 child 윈도우의 최초 UID를 리턴 * @----------------------------------------------------------------------------------- */ function getChildUID(wid) { var cid = model.getValue(gvChUIDPath+wid); if (cid==null) { cid=""; } return cid; } /** * @----------------------------------------------------------------------------------- * @desc : Opener가 다른 화면으로 변경되었는지 여부를 반환한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function checkOpener() { if (isPopup()) { return (getOpenerUID()==opener.model.getValue(gvMyUIDPath)); } else { return false; } } /** * @----------------------------------------------------------------------------------- * @desc : wid를 사용하여 open된 child window 객체들 중에서 UID가 바뀌지 않은 window객체를 리턴한다. * child window가 없거나 있더라도 UID가 바뀌었다면 null을 리턴한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function getChildWindow(wid) { return findChildWindow(getChildUID(wid)); } /** * @----------------------------------------------------------------------------------- * @desc : 열려있는 child 윈도우 중에서 현재의 UID가 주어진 cid와 동일한 * window 객체를 찾아서 리턴한다. 없으면 null * @param : * @return : child or null * @----------------------------------------------------------------------------------- */ function findChildWindow(cid) { var child = null; for(i=0;i 0; i-- ) { window.children.item(i-1).close(); } } } /** * @----------------------------------------------------------------------------------- * @desc : 화면전환시 child가 close되도록 저장 * @param : * @return : * @----------------------------------------------------------------------------------- */ function setCloseChildWindow(){ model.makeValue(gvChildClosePath,"Y"); } /** * @----------------------------------------------------------------------------------- * @desc : 자신이 팝업인지 아닌지를 리턴한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function isPopup() { var stype = window.type; if (stype == "iviewer" || stype == "main") { return false; } else { return true; } } /** * @----------------------------------------------------------------------------------- * @desc : wid로 open한 child window를 activate한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function activateChild(wid) { var cwnd = window.children.item(wid); if (cwnd != null) { cwnd.activate(); } } /** * @----------------------------------------------------------------------------------- * @desc : opener를 activate한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function activateOpener() { if (isPopup()) { opener.javascript.activateMyWindow(); } } /** * @----------------------------------------------------------------------------------- * @desc : 자기 자신 window를 activate한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function activateMyWindow() { if (isPopup()) { window.restore(); window.activate(); } else { // main viewer 인 경우 htmlwindow.focus(); } } /** * @----------------------------------------------------------------------------------- * @desc : 화면 상태 반환 * @param : * @return : * @----------------------------------------------------------------------------------- */ function getScreenDisabled(){ return body.disabled; } /** * @----------------------------------------------------------------------------------- * @desc : 메뉴Object 상태설정 * @param : * @return : * @----------------------------------------------------------------------------------- */ function setMenuDisabled(type){ htmlwindow.setMenuDisabled(type); } /** * @----------------------------------------------------------------------------------- * @desc : xrw 화면 로딩 * @param : open Type : modal, modeless * id : 화면 id * idType : url, scn * monNo : 모니터 no * xPos : x좌표 * yPos : y좌표 wid : child 화면의 window id ref : 새로 띄우는 window 로 전달할 부모 인스턴스의 XPath resultref : 부모 인스턴스에서 전달하는 ref 의 내용이 저장될 새로 띄우는 windows 의 인스턴스 XPath userProp : 새로 띄우는 window 의 style지정(window 사이즈 및 위치지정가능) prevPos : 사용자별 좌표정보 적용여부 : true(적용) -기본/ false(적용안함) * @return : * @----------------------------------------------------------------------------------- */ function openInternal(openType,id,idType,monNo,xPos,yPos,wid,ref,resultref,userProp,prevPos) { var url = null; var sid = getScreenID(id); if (wid == null || wid == "") { wid = sid; } if (prevPos == null) { // 이전 저장 좌표 사용 여부 prevPos = true; } if ( idType == "url" ) { // idType == "url" 이면 ID를 그대로 URL로 open한다. url = id; } else { // idType == "scn" //url = sid+".xrw"; url = getScreenURL(sid); } // 좌표값 결정 로직 var prop = null; if (monNo == null && xPos == null && yPos == null) { // 파라메터로 모니터,X,Y 값을 모두 지정하지 않은 경우는 이전 좌표 저장 값과 상관 없이 현재 모니터의 중앙에 open 한다. var viewerObj = getViewer("sysMessage"); if (viewerObj != null && viewerObj.window.javascript.fSetStatusMessage != undefined) { // 현재 모니터에서의 중앙 좌표값 계산을 위한 로직 /* -- 여기부터 monNo = getCurrentMonitorNumber()-1; var monSize = viewerObj.window.javascript.fGetMonitorSize(monNo); xPos = monSize[0]/2 - 605; // 1211px/2 yPos = monSize[1]/2 - 392; // 784px/2 if (xPos < 0) { xPos = 0; } if (yPos < 0) { yPos = 0; } var loc = getAbsoluteLocation(monNo,xPos,yPos); */ // -- 여기까지 함수로 만들자. locateCenter(userProp,monNo) : 리턴 --> x,y 절대좌표 var loc = locateCenter(xPos, yPos, userProp); xPos = loc[0]; yPos = loc[1]; prop = "top:"+yPos+"px;left:"+xPos+"px;width:" + gvDefaultScrWidth + "px;height:" + gvDefaultScrHeight + "px;"; } else { // 상태 메시지 Bar가 없는 미리보기의 경우이다. prop = "align:center;width:" + gvDefaultScrWidth + "px;height:" + gvDefaultScrHeight + "px;"; } } else { // 파라메터로 모니터,X,Y 중 하나라도 명시했다면 우선 이전에 저장된 좌표를 찾아서 그 위치에 띄운다. // 이전 좌표가 없으므로 파라메토로 주어진 좌표를 사용한다. // locateCenter() 함수를 사용한다. /* -- 여기부터 var width = "", height = ""; if (userProp != null) { var wexp = new RegExp("(width:)([0-9]+)(px)", "gi"); var hexp = new RegExp("(height:)([0-9]+)(px)", "gi"); var w = userProp.match(wexp); var h = userProp.match(hexp); // width, height 값 설정되어 있는경우, 해당 width, height 를 이용해서 화면의 가운데에 보여지도록 한다. // align=center 를 사용하면 2번 모니터로 보여지지 않기 때문. if (w != null && w.length == 1) { width = w[0].match(new RegExp("([0-9]+)", "gi")); } if (h != null && h.length == 1) { height = h[0].match(new RegExp("([0-9]+)", "gi")); } } if (monNo == "" || monNo == null) { // 파라메터에서 모니터를 지정하지 않았으면 현재 모니터 번호를 사용 monNo = getCurrentMonitorNumber(); } monNo = parseInt(monNo)-1; if (monNo < 0) { monNo = 0; } var monSize = getMonitorSize(monNo); if (xPos == "" || xPos == null) { // 파라메터에서 X 좌표를 지정하지 않았으면 중심좌표를 계산해서 사용 if (width != "") { xPos = parseInt(monSize[0])/2 - width/2; } else { xPos = 0; } } if (yPos == "" || yPos == null) { // 파라메터에서 Y 좌표를 지정하지 않았으면 중심좌표를 계산해서 사용 if (height != "") { yPos = monSize[1]/2 - height/2; } else { yPos = 0; } } loc = getAbsoluteLocation(monNo,xPos,yPos); */ // -- 여기까지 // xPos, yPos loc = locateCenter(xPos, yPos, userProp,monNo); xPos = loc[0]; yPos = loc[1]; prop="top:"+yPos+"px;left:"+xPos+"px;"; } // 사용자 지정 프로퍼티 추가(뒤에 추가해야 중복된게 있어도 우선적으로 적용된다.) if (userProp != null) { prop = prop + userProp; } // 같은 화면ID로 이미 열려있는지 확인하여, 기존에 이미 동일 화면 ID로 열려있는 창이 있다면 // 그 창을 Activate 시킨다. (2008.2.12 변경) var viewerObj = getViewer("sysMessage"); var wd = null; if (viewerObj != null && viewerObj.window.javascript.fGetOpenWindow != undefined) { // 메인화면이 있는 경우이다. 메인뷰어를 확인하고 그 이후에 열린화면 목록에서 확인한다. // 메인화면에 해당 화면이 열려 있는 경우는 제외(보험심사화면에서는 메인화면의 화면과 같은 화면ID의 화면을 Modeless로 연다) // var mainWnd = getMainViewer(); // if (mainWnd != null && mainWnd.javascript.getScreenID() == sid) { // wd = mainWnd; // } else { wd = viewerObj.window.javascript.fGetOpenWindow(sid); // } } else { // 미리 보기인 경우이다. 자신과 opener, child 윈도우에서 찾는다. if (isPopup() && opener.javascript.getScreenID() == sid) { wd = opener; } else if (getScreenID() == sid) { wd = window; } else { wd = findChildWindowByScreenID(sid); } } var cid = ""; if (wd != null && openType =="modeless") { // modeless고 기존에 동일 화면 ID로 떠있는 경우:activate cid = wd.javascript.getMyUID(); wd.javascript.activateMyWindow(); // 열려있는 화면을 Activate 한다. wd.body.dispatch("onActivate"); // Activate시 실행 } else { // replace이거나 기존에 동일 화면ID로 떠있는 화면이 없는 경우 : 새로 생성 window.load(url,openType,wid,prop,ref,resultref); if (openType!="replace") { // open된 윈도우가 자신의 uid를 latest로 넣어주었으므로 그 값을 // wid를 키로하여 저장해놓는다. cid = model.getValue(gvChUIDPath+"latest"); model.makeValue(gvChUIDPath+wid,cid); model.makeValue(gvChUIDPath+"latest",""); // latest는 삭제 } } return cid; /** // wid 로 열린화면이 있는지 확인하기 위하여 uid를 확인한다. var cid = getChildUID(wid); // uid가 존재한다면 이전에 열린적이 있으므로 children중에서 있는지 확인한다. if (cid != "") { var child = findChildWindow(cid); // 같은 uid가 존재한다면 그것을 activate 하고 리턴한다. if ( child!=null ) { child.activate(); return cid; } } // 새로 여는 경우 또는 열었지만 그것이 replace되어서 uid가 바뀐 경우 윈도우 생성한다. window.load(url,openType,wid,prop,ref,resultref); if (openType!="replace") { // open된 윈도우가 자신의 uid를 latest로 넣어주었으므로 그 값을 // wid를 키로하여 저장해놓는다. cid = model.getValue(gvChUIDPath+"latest"); model.makeValue(gvChUIDPath+wid,cid); model.makeValue(gvChUIDPath+"latest",""); // latest는 삭제 return cid; } else { return ""; } **/ } /** 진상찬: window.load를 사용할 경우 순수에서 open함수를 자체적으로 사용. 동일한 이름이어서 순수가 자체 함수를 사용하지 못하고 여기 open함수를 사용하게 되어 window.load가 작동하지 않음. 그래서 주석처리 * @----------------------------------------------------------------------------------- * @desc : modeless 로 창을 띄움 * @param : id : 화면아이디 monNo : 창을 띄우고자 하는 모니터번호(1, 2, ..., N) xPos : 창의 X 좌표(모니터 맨 왼쪽:0) yPos : 창의 Y 좌표(모니터 맨 위:0) wid : child 화면의 window id ref : 새로 띄우는 window 로 전달할 부모 인스턴스의 XPath resultref : 부모 인스턴스에서 전달하는 ref 의 내용이 저장될 새로 띄우는 windows 의 인스턴스 XPath userProp : 새로 띄우는 window 의 style지정(window 사이즈 및 위치지정가능) prevPos : 사용자별 좌표정보 적용여부 : true(적용) -기본/ false(적용안함) resizeType : 화면사이즈 적용 종류("none" : 화면해상도기준&작업표시줄 크기제외(기본) / "free" : 정의된 화면사이즈 그대로 / "notaskbar" : 화면해상도기준 & 작업표시줄크기 무시) * @return : openInternal * @----------------------------------------------------------------------------------- */ //function open(id,monNo,xPos,yPos,wid,ref,resultref,userProp,prevPos, authCode, resizeType) { // if (userProp == null) { // userProp = "max:hidden;"; // } else { // userProp = "max:hidden;" + userProp; // } // // // 특정 권한코드를 부여한 경우, 해당 화면은 부여한 권한코드값으로 권한값이 바뀌게 된다.(메뉴권한이 있어도 덮어 쓴다.) // if (authCode == null) { // setGlobalVariable("spclscrnauth", getAuthCode("")); // } else { // setGlobalVariable("spclscrnauth", getAuthCode(authCode)); // } // // if (resizeType == null || resizeType == "" || resizeType == "none") { // setGlobalVariable("resizetype", "none"); // } else if (resizeType == "notaskbar") { // setGlobalVariable("resizetype", "notaskbar"); // } else if (resizeType == "free") { // setGlobalVariable("resizetype", "free"); // } // // return openInternal("modeless",id,"scn",monNo,xPos,yPos,wid,ref,resultref,userProp,prevPos); //} /** * @----------------------------------------------------------------------------------- * @desc : replace로 창을 띄움 * @param : * @return : openInternal * @----------------------------------------------------------------------------------- */ function navigate(id,monNo,xPos,yPos,wid,ref,resultref, authCode) { //화면권한 var scrnauth = model.getValue(gvAuthPath); setGlobalVariable("scrnauth", scrnauth); //child close closeChildWindow(); if (authCode == null) { setGlobalVariable("spclscrnauth", getAuthCode("")); } else { setGlobalVariable("spclscrnauth", getAuthCode(authCode)); } return openInternal("replace",id,"scn",monNo,xPos,yPos,wid,ref,resultref); } /** * @----------------------------------------------------------------------------------- * @desc : modal로 창을 띄움 * @param : * @return : * @----------------------------------------------------------------------------------- */ function modal(id,monNo,xPos,yPos,wid,ref,resultref,userProp,prevPos, authCode, resizeType) { var rtn = ""; body.disabled = true; if (userProp == null) { userProp = "min:hidden;max:hidden;"; } else { userProp = "min:hidden;max:hidden;" + userProp; } if (authCode == null) { setGlobalVariable("spclscrnauth", getAuthCode("")); } else { setGlobalVariable("spclscrnauth", getAuthCode(authCode)); } if (resizeType == null || resizeType == "" || resizeType == "none") { setGlobalVariable("resizetype", "none"); } else if (resizeType == "notaskbar") { setGlobalVariable("resizetype", "notaskbar"); } else if (resizeType == "free") { setGlobalVariable("resizetype", "free"); } rtn = openInternal("modal",id,"scn",monNo,xPos,yPos,wid,ref,resultref,userProp,prevPos); body.disabled = false; return rtn; } /** * @----------------------------------------------------------------------------------- * @desc : 사용자가 입력하는 권한코드를 실제 코드로 변경해서 반환한다. * @param : auth : 권한코드 * @return : 10000000, 11000000, 11100000 * @----------------------------------------------------------------------------------- */ function getAuthCode(auth) { return ""; } /** * @----------------------------------------------------------------------------------- * @desc : 시스템 메시지 출력함수 * @param : * @return : * @----------------------------------------------------------------------------------- */ function setSystemMessage(msg) { //var viewerObj = getViewer("sysMessage"); //if (viewerObj != null && viewerObj.window.javascript.fSetStatusMessage != undefined) { // viewerObj.window.javascript.fSetStatusMessage(msg); //} } /** * @----------------------------------------------------------------------------------- * @desc : 모니터번호 기준좌표를 절대좌표로 변환한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function getAbsoluteLocation(mon,xpos,ypos) { //var viewerObj = getViewer("sysMessage"); //if (viewerObj != null && viewerObj.window.javascript.fGetAbsoluteCoordinate != undefined) { // return viewerObj.window.javascript.fGetAbsoluteCoordinate(mon,xpos,ypos); //} else { var abspos = new Array(2); abspos[0] = xpos; abspos[1] = ypos; return abspos; //} } /** * @----------------------------------------------------------------------------------- * @desc : 주어진 화면 좌표를 모니터 번호와 모니터 기준의 상대좌표로 변환한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function getRelativeCoordinate(xpos,ypos){ //var viewerObj = getViewer("sysMessage"); //if (viewerObj != null && viewerObj.window.javascript.fGetRelativeCoordinate != undefined) { // var coord = viewerObj.window.javascript.fGetRelativeCoordinate(xpos,ypos); // coord[0] = coord[0]+1; // return coord; //} else { var coord = new Array(3); coord[0] = 1; coord[1] = xpos; coord[2] = ypos; return coord; //} } /** * @----------------------------------------------------------------------------------- * @desc : 화면이 로딩된 모니터 번호를 반환한다. * @param : * @return : getRelativeCoordinate 호출 * @----------------------------------------------------------------------------------- */ function getCurrentMonitorNumber() { return getRelativeCoordinate(window.left,window.top)[0]; } /** * @----------------------------------------------------------------------------------- * @desc : 모니터 사이즈 반환 * @param : * @return : * @----------------------------------------------------------------------------------- */ function getMonitorSize(monNo) { //var viewerObj = getViewer("sysMessage"); //if (viewerObj != null && viewerObj.window.javascript.fGetMonitorSize != undefined) { // return viewerObj.window.javascript.fGetMonitorSize(monNo); //} else { var monSize = new Array(2); monSize[0] = 1280; monSize[1] = 1024; return monSize; //} } /** * @----------------------------------------------------------------------------------- * @desc : 자신의 화면을 열린윈도우 목록에 등록한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function addOpenWindow() { //var viewerObj = getViewer("sysMessage"); //if (viewerObj != null && viewerObj.window.javascript.fAddOpenWindow != undefined) { // viewerObj.window.javascript.fAddOpenWindow(getScreenID()+"|"+getMyUID()+"|"+getTitle(),window); // viewerObj.window.javascript.fAddOpenWindow(getScreenID()+"|"+getMyUID()+"|"+window.type+"|"+getTitle(),window); // } } /** * @----------------------------------------------------------------------------------- * @desc : 자신의 화면을 열린윈도우 목록에서 삭제한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function removeOpenWindow() { //var viewerObj = getViewer("sysMessage"); //if (viewerObj != null && viewerObj.window.javascript.fRemoveOpenWindow != undefined) { // viewerObj.window.javascript.fRemoveOpenWindow(getScreenID()+"|"+getMyUID()+"|"+getTitle()); // viewerObj.window.javascript.fRemoveOpenWindow(getScreenID()+"|"+getMyUID()+"|"+window.type+"|"+getTitle()); // } } /** * @----------------------------------------------------------------------------------- * @desc : 열린 화면들 중에서 화면 ID가 sid인 화면의 윈도우 객체를 반환한다. * 해당 화면이 없으면 null을 반환한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function getOpenWindow(sid) { //var viewerObj = getViewer("sysMessage"); //if (viewerObj != null && viewerObj.window.javascript.fGetOpenWindow != undefined) { // return viewerObj.window.javascript.fGetOpenWindow(sid); //} else { return null; // } } /** * @----------------------------------------------------------------------------------- * @desc : his main 윈도우 객체를 반환한다. 해당 window가 없으면 null을 반환한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function getMainViewer(){ //var viewerObj = getViewer("bizMain"); //미리보기(F5) 상태 체크 //if ( viewerObj == null ) //{ // viewerObj = htmldocument.all.TFViewer1; //} //if ( viewerObj == null ) //{ return null; //} else{ // return viewerObj.window; //} } // // 화면간 데이터 전달 // /** * @----------------------------------------------------------------------------------- * @desc : parameter 저장용 인스턴스 경로를 리턴 * @param : * @return : * @----------------------------------------------------------------------------------- */ function getParameterPath() { return gvParamPath; } /** * @----------------------------------------------------------------------------------- * @desc : name 명으로 value 값을 저장, 기존에 같은 name이 있으면 첫번째 값을 덮어씀 * @param : * @return : * @----------------------------------------------------------------------------------- */ function setParameter(name, value){ var valueNode = instance1.selectSingleNode(gvParamPath+"/"+name+"/"+name+"value"); model.makeValue(gvParamPath+"/"+name+"/"+name+"value", value); } /** * @----------------------------------------------------------------------------------- * @desc : name 명으로 value 값을 추가 * @param : * @return : * @----------------------------------------------------------------------------------- */ function addParameter(name, value){ var valueNode = instance1.selectSingleNode(gvParamPath+"/"+name+"/"+name+"value"); if(valueNode==null){ model.makeValue(gvParamPath+"/"+name+"/"+name+"value", value); }else{ var nameNode = instance1.selectSingleNode(gvParamPath+"/"+name); valueNode = instance1.createNode("element", name+"value", ""); valueNode.text = value; nameNode.appendChild(valueNode); } } /** * @----------------------------------------------------------------------------------- * @desc : index 번째 name의 값을 가져옴, index 생략하면 1 * @param : * @return : * @----------------------------------------------------------------------------------- */ function getParameter(name, index){ if (index==null) { index = 1; } return model.getValue(gvParamPath+"/"+name+"/"+name+"value["+index+"]"); } /** * @----------------------------------------------------------------------------------- * @desc : 파라미터저장용 인스턴스의 하위노드갯수(파라미터 개수)를 반환한다. * @param : name : 파라미터이름 * @return : * @----------------------------------------------------------------------------------- */ function getParameterCount(name){ return new Number(instance1.selectnodes(gvParamPath+"/"+name+"/"+name+"value").length); } /** * @----------------------------------------------------------------------------------- * @desc : name 명으로 저장된 데이터들 중에서 index 번째 위치에 있는 값을 삭제한다. * index를 생략하면 첫번째 위치의 값을 삭제한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function removeParameter(name, index){ if (index==null) { index = 1; } model.removeNode(gvParamPath+"/"+name+"/"+name+"value["+index+"]"); } /** * @----------------------------------------------------------------------------------- * @desc : name의 모든 값울 삭제함 * @param : * @return : * @----------------------------------------------------------------------------------- */ function clearParameter(name){ model.removeNode(gvParamPath+"/"+name); } /** * @----------------------------------------------------------------------------------- * @desc : 업무구분코드로 시작되는 문자열을 넘기면, 업무구문 문자열을 반환한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function getBizName(bizCode) { var firstChar = bizCode.charAt(2); var bizName = ""; switch(firstChar) { case 'P': // 원무 case 'p': bizName = "pam"; break; case 'M': // EMR case 'm': bizName = "emr"; break; case 'A': // 진료지원 case 'a': bizName = "ast"; break; case 'L': // LIS case 'l': bizName = "lis"; break; case 'R': // MIS case 'r': bizName = "mis"; break; case 'Z': // 공통 case 'z': bizName = "com"; break; case 'S': // 통합통계 case 's': bizName = "sts"; break; case 'C': // CRM case 'c': bizName = "crm"; break; case 'I': // CRC(임상지원센터) case 'i': bizName = "crc"; break; case 'D': // CRD(전자카드) case 'd': bizName = "crd"; break; case 'T': // 임시 case 't': bizName = "tmp"; break; default: // unknown bizName = ""; break; } return bizName; } /** * @----------------------------------------------------------------------------------- * @desc : 메인화면의 domain을 리턴한다. * @param : * @return : domainStr * @----------------------------------------------------------------------------------- */ function getMainDomain() { // 조국 수정 - domain setting // setGlobalVariable("domain", "http://175.126.121.186"); var domainStr = getGlobalVariable("domain"); if (domainStr == "") { // 미리보기의 경우 domainStr = "http://his999dev.knu.ac.kr:8088"; } return domainStr; } /** * @----------------------------------------------------------------------------------- * @desc : syscd 가 주어지면 해당 시스템의 접속 도메인 URL을 반환 * syscd가 null 이면 현재 화면이 연결된 연결된 시스템의 접속 도메인 URL을 반환 * @param : syscd : 시스템코드 * @return : domainStr * @----------------------------------------------------------------------------------- */ function getDomain(syscd) { var domainStr = null; if (syscd == null || syscd == "") { syscd = model.getValue(gvSystemPath); } if (syscd == null || syscd == "") { domainStr = getMainDomain(); } else { domainStr = getGlobalVariable("sysurl" + syscd.toUpperCase()); } return domainStr; } /** * @----------------------------------------------------------------------------------- * @desc : 현재화면의 화면ID를 반환한다. * @param : * @return : 화면ID * @----------------------------------------------------------------------------------- */ function getScreenURL(sid,syscd) { return getDomain(syscd)+getScreenURI(sid); } /** * @----------------------------------------------------------------------------------- * @desc : 화면의 URI 를 가져온다. * @param : * @return : 화면URI * @----------------------------------------------------------------------------------- */ function getScreenURI(sid) { return "/himed/webapps/hit/web/xrw/"+sid+".xrw"; } /** * @----------------------------------------------------------------------------------- * @desc : submitID 에 대한 HTTP URI 를 반환한다. * @param : * @return : HTTP URI * @----------------------------------------------------------------------------------- */ function getActionURI(submitID) { var bizName = getBizName(submitID); var scrnID = getScreenID(); return "/himed/webapps/hit/web/xrw/.live?submit_id="+submitID+"&business_id="+bizName+"&screen_id="+scrnID; } /** * @----------------------------------------------------------------------------------- * @desc : submitID 에 대한 HTTP URL 를 반환한다. * @param : * @return : HTTP URL * @----------------------------------------------------------------------------------- */ function getActionURL(submitID) { return getDomain()+getActionURI(submitID); } var gvOnSubmit = false; var gvShowAlert = false; var gvSuppressError = false; var gvForceSubmit = false; var gvHtmlRedirect = false; // 영구적으로 창을 띄우지 않을 것인지에 대한 글로벌 변수 ( added by 이상준 2009-08-20 ) var gvSuppressErrorCheck = false; /** * @----------------------------------------------------------------------------------- * @desc : 다음 submit() 호출에 대하여만 서버에서 메시지로 내려준 내용을 MessageBox()로 보여준다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function setAlertOn() { gvShowAlert = true; } /** * @----------------------------------------------------------------------------------- * @desc : 다음 submit() 호출에 대하여만 서버에러 메시지 창을 띄우지 않는다. * (SuppressErrorCheck 가 true 인 경우 영구적으로 에러메시지 창을 띄우지 않는다. added by 이상준 2009-08-20 ) * @param : * @return : * @----------------------------------------------------------------------------------- */ function setErrorOff(SuppressErrorCheck) { gvSuppressError = true; if(SuppressErrorCheck == true) { gvSuppressErrorCheck = true; } } /** * @----------------------------------------------------------------------------------- * @desc : 영구적으로 에러메시지 창을 띄우지 않는 변수를 다시 false 로 바꾼다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function setErrorOn() { gvSuppressError = false; gvSuppressErrorCheck = false; } /** * @----------------------------------------------------------------------------------- * @desc : 다음 submit() 호출에 대하여만 session timeout 에 상관없이 submit()이 실행되도록 한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function setForceOn() { gvForceSubmit = true; } /** * @----------------------------------------------------------------------------------- * @desc : 다음 submit() 호출에 대하여만 결과가 HTML로 올 경우 HTML 을 보여주도록 설정한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function setHtmlRedirect() { gvHtmlRedirect = true; } /** * @----------------------------------------------------------------------------------- * @desc : 세션 타임 아웃 확인 * @param : * @return : true, false * @----------------------------------------------------------------------------------- */ function checkTimeout() { var timeOut = parseInt(getGlobalVariable("session_timeout")); if (isNaN(timeOut) || timeOut <= 0) { // timeout 적용하지 않음 return false; } var lastTime = getGlobalVariable("last_submit"); var curTime = (new Date()).getTime(); if (curTime - parseInt(lastTime) > (timeOut*60000)) { return true; } else { return false; } } /** * @----------------------------------------------------------------------------------- * @desc : 해당서브밋을 서버로 요청한다. * @param : submitID : 서브밋아이디 * refresh : model 에 리프레시 적용 유무 * ref : 참조대상 노드셋 * resultref : 서브밋 결과 노드셋 * encoding : 인코딩설정 (기본값 UTF-8) * @return : * @----------------------------------------------------------------------------------- */ function submit(submitID, refresh, ref, resultref, encoding) { var showAlert = gvShowAlert; var suppressError = gvSuppressError; gvShowAlert = false; if(gvSuppressErrorCheck == false) { gvSuppressError = false; } // 동시 submit 막기 위한 확인 절차 if (gvOnSubmit) { gvHtmlRedirect = false; return false; } else { gvOnSubmit = true; } var actionURL = getActionURL(submitID) + getUserSessionString(); // 사용자정보 query string 추가. if ( refresh == null ) { refresh = true; } var retvalue = false; try { var sid = document.all(submitID); if (!sid) { messageBox("Submit["+submitID+"]이 정의되지","E007"); gvOnSubmit = false; gvHtmlRedirect = false; return false; } // ref와 resultref를 설정한다. // null 이거나 "" 이면 설정하지 않는다. if ( ref != null && ref != "" ) { sid.attribute("ref") = ref; } if ( resultref != null && resultref != "" ) { sid.attribute("resultref") = resultref; } // action url을 설정한다. sid.attribute("action") = actionURL; sid.attribute("encoding") = "utf-8"; //sid.attribute("type") = "custom"; // 서버에 submit하기전에 이전 에러 메시지 인스턴스를 비운다. model.removeNode(gvErrorMsgPath); // 서버에 submit한다. // 2011-06-03 진상찬: 컴스퀘어 요청으로 동기식으로 변경 //var ret = model.send(submitID, refresh, false, true); //비동기식 var ret = model.send(submitID, refresh, false, false); //동기식 if ( ret == 200 ) { // 후처리 retvalue = showSystemMessage(showAlert,suppressError); } /*** 조국 수정 - 아직 구현되지 않음 else { if (!suppressError) { messageBox("Submit["+submitID+"] 실행을","E009","[ret:"+ret+"]"); } retvalue = false; } */ } catch (e) { if (!suppressError) { messageBox("Submit["+submitID+"] 실행을","E009","[exception:"+e+"]"); } retvalue = false; } gvOnSubmit = false; gvHtmlRedirect = false; return retvalue; } function submit_old(submitID, refresh, ref, resultref, encoding) { var showAlert = gvShowAlert; var suppressError = gvSuppressError; gvShowAlert = false; if(gvSuppressErrorCheck == false) { gvSuppressError = false; } var islogout = false; if (!gvForceSubmit) { gvForceSubmit = false; if (checkTimeout()) { // 암호확인창 띄우기 body.disabled = true; setParameter("type", "session"); // 암호확인 창에서 종료를 선택했는지 여부를 확인 setParameter("islogout", "false"); modal("SPZUM00400", "", "", "", "", "", "","width:279px;height:180px;align:center;sysmenu:hidden;"); // debugger; body.disabled = false; if (getParameter("islogout") == "true") { // 종료를 선택했다. -> submit 을 날리지 않고 당 메소드를 종료하고 logout 절차를 진행한다. islogout = true; } else { if (checkTimeout()) { gvHtmlRedirect = false; return false; // 암호확인 안됨 } } } // submit 시간 업데이트 setGlobalVariable("last_submit", (new Date()).getTime()); } // 종료를 선택했으면 로그아웃절차를 수행 if (islogout) { var status = getViewer("sysMessage");//message Object status.window.javascript.fLogout("session"); return; } else { // 동시 submit 막기 위한 확인 절차 if (gvOnSubmit) { gvHtmlRedirect = false; return false; } else { gvOnSubmit = true; } var actionURL = getActionURL(submitID) + getUserSessionString(); // 사용자정보 query string 추가. if ( refresh == null ) { refresh = true; } var retvalue = false; try { var sid = document.all(submitID); if (!sid) { messageBox("Submit["+submitID+"]이 정의되지","E007"); gvOnSubmit = false; gvHtmlRedirect = false; return false; } // ref와 resultref를 설정한다. // null 이거나 "" 이면 설정하지 않는다. if ( ref != null && ref != "" ) { sid.attribute("ref") = ref; } if ( resultref != null && resultref != "" ) { sid.attribute("resultref") = resultref; } // action url을 설정한다. sid.attribute("action") = actionURL; if (encoding != null && encoding != "") { sid.attribute("encoding") = encoding; } else { sid.attribute("encoding") = "utf-8"; } //sid.attribute("type") = "custom"; // 서버에 submit하기전에 이전 에러 메시지 인스턴스를 비운다. model.removeNode(gvErrorMsgPath); // 서버에 submit한다. var ret = model.send(submitID, refresh, false, true); if ( ret == 200 ) { // 후처리 retvalue = showSystemMessage(showAlert,suppressError); } /*** 조국 수정 - 아직 구현되지 않음 else { if (!suppressError) { messageBox("Submit["+submitID+"] 실행을","E009","[ret:"+ret+"]"); } retvalue = false; } */ } catch (e) { if (!suppressError) { messageBox("Submit["+submitID+"] 실행을","E009","[exception:"+e+"]"); } retvalue = false; } gvOnSubmit = false; gvHtmlRedirect = false; return retvalue; } } /** * @----------------------------------------------------------------------------------- * @desc : submit 수행 시 에러가 난 경우 발생 * @param : * @return : * @----------------------------------------------------------------------------------- */ function xforms_submit_error() { if (error.errorcode == 3003) { messageBox("받은 데이터 중 유효하지 않은 문자가 존재하여 화면 출력을","E009","[errorcode:"+error.errorcode+"]"); event.stopPropagation(); } } /** * @----------------------------------------------------------------------------------- * @desc : 서버에서 전달된 메시지를 화면에 보여준다. * @param : * @return : true, false * @----------------------------------------------------------------------------------- */ function showSystemMessage(showAlert,suppressError) { var type = model.getValue(gvErrorMsgPath+"/type"); var code = model.getValue(gvErrorMsgPath+"/code"); var msg = model.getValue(gvErrorMsgPath+"/msg"); var desc = model.getValue(gvErrorMsgPath+"/description"); if ( "error" == type ) { if (suppressError == null || !suppressError) { body.disabled = true; window.load("../../../com/commonweb/xrw/SPZZZ00100_시스템에러.xrw","modal","","width:514px;height:198px;align:center;",gvErrorMsgPath,"/root/main"); body.disabled = false; } return false; } else { setSystemMessage(msg); if (showAlert != null && showAlert) { messageBox(msg,"I"); } return true; } } /** * @----------------------------------------------------------------------------------- * @desc : submit시 서버 시스템 오류 또는 HTML 데이터가 내려올 경우 * @param : * @return : * @----------------------------------------------------------------------------------- */ function onredirecthtml() { if( document.all(event.target).elementName == "xforms:submission" && gvHtmlRedirect == false) { event.preventDefault(); event.stopPropagation(); } gvHtmlRedirect = false; } /** * @----------------------------------------------------------------------------------- * @desc : submit 결과에 이 있을 경우 * @param : * @return : * @----------------------------------------------------------------------------------- */ function onerror() { var msg = error.description; var svrtime = error.errorSource; var pctime = (new Date()).getTime(); // 서버시간과의 차이를 저장해 놓는다. setGlobalVariable("timediff", svrtime - pctime); event.stopPropagation(); // 에러 내용을 instance에 저장 handleSystemMessage(msg); } /** * @----------------------------------------------------------------------------------- * @desc : submit 결과로 전달돤 error event의 내용을 처리한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function handleSystemMessage(msg) { // 에러 내용을 instance에 저장 var msgItem = msg.split("|"); model.makeValue(gvErrorMsgPath+"/type",msgItem[0]); // error 또는 info model.makeValue(gvErrorMsgPath+"/code",msgItem[1]); // error인 경우 에러코드 model.makeValue(gvErrorMsgPath+"/msg",msgItem[2].replace(";","\n"),true); // 메시지의 newline 기호인 ; 를 실제 줄바꿈으로변경 var description = ""; if (msgItem[3] != null && msgItem[3] != "undefined") { description = msgItem[3]; } if (msgItem[4] != null && msgItem[4] != "undefined") { description = description + "\n" + msgItem[4]; } model.makeValue(gvErrorMsgPath+"/description",description); // error인 경우 발생위치 } /** * @----------------------------------------------------------------------------------- * @desc : 사용자 정보 세션 데이터를 항상 서버 submit과 함께 올리기 위하여 * 해당 데이터를 action URL에 query string으로 추가한다. * 이때 사용할 query string을 생성한다. * @param : * @return : * @----------------------------------------------------------------------------------- */ function getUserSessionString() { var sessionStr = "&macaddr="+getUserInfo("macaddr"); var isAnonymous = getGlobalVariable("anonymous"); if (isAnonymous == "true") { // 미리보기인 경우 세션정보를 파라메터로 추가한다. sessionStr = sessionStr + "&anony_session="+encodeURI(getUserInfos()); } return sessionStr; } /** * *I001=처리되었습니다. *I002=완료되었습니다. *I003=필수입력입니다. *I004=없습니다. *I005=환자입니다. *I006=가능합니다. *I007=확인하십시오. *I008=하십시오. *I009=입니다. *I010=있습니다. *I011=않습니다. * *C001=입력하십시오 ! *C002=선택하십시오 ! *C003=진행하십시오 ! * *E001=할 수 없습니다. *E002=권한이 없습니다. *E003=초과하였습니다. *E004=일치하지 않습니다. *E005=선택되었습니다. *E006=중복되었습니다. *E007=않았습니다. *E008=입니다. *E009=실패하였습니다. *E010=사원만 가능합니다. *E011=이전만 가능합니다. *E012=이후만 가능합니다. *E013=데이터가 없습니다. *E014=존재하지 않습니다. *E015=자리까지만 가능합니다. *E016=유효하지 않습니다. * *Q001=삭제 하시겠습니까 ? *Q002=저장 하시겠습니까 ? *Q003=계속 진행하시겠습니까? *Q004=실행 하시겠습니까? *Q005=조회 하시겠습니까? *Q006=확정 하시겠습니까? *Q007=취소 하시겠습니까? *Q008=추가 하시겠습니까? *Q009=적용 하시겠습니까? *Q010=초기화 하시겠습니까? *Q011=확인 하시겠습니까? *Q012=수정 하시겠습니까? *Q013= 선택 하시겠습니까? *Q014= 등록 하시겠습니까? *Q015= 재요청 하시겠습니까? *Q016= 종결된 기록지입니다. 기록내용을 수정하시겠습니까? * *S001=하시려면 예(Yes)\n아니면 아니오(No) *S002=저장하시려면 예(Yes)\n변경하시려면 아니오(No) *S003=pMessage 하시려면 예(Yes)\n pOptMsg 하시려면 아니오(No) *S004=하시려면 예(Yes)\n아니면 아니오(No)\n무시하시려면 취소를 선택하세요 *S005=종결된 기록지입니다. 작업유형을 선택하십시오\n\n예 : 기록수정 / 아니오 : 신규기록생성 *S006=pMessage 하시려면 예(Yes)\n pOptMsg[0] 하시려면 아니오(No)\n pOptMsg[1] 하시려면 취소를 선택하십시오. * *return : */ /** * @----------------------------------------------------------------------------------- * @desc : msg_code : I(Information), C(Critical), E(Exclamation), Q(Question, YN), S(Select, YNC) * @param : pMessage : 메시지 타입, pCode : 코드정보 * @return : yes=6, no=7 * @----------------------------------------------------------------------------------- */ function messageBox(pMessage, pCode, pOptMsg) { var alertMsg = null; var msgTitle = null; var msgType = null; var msgData = null; var msgRtn = ""; // Title Message switch( pCode.substr(0,1) ){ case "I": msgTitle = "정보"; msgType = "64"; break; case "C": msgTitle = "오류"; msgType = "16"; break; case "E": msgTitle = "경고"; msgType = "48"; break; case "Q": msgTitle = "확인"; msgType = "36"; break; case "S": msgTitle = "선택"; msgType = "35"; break; default : msgTitle = "오류"; msgType = "16"; } // Message Data switch( pCode ){ case "I001": alertMsg = " 처리되었습니다."; break; case "I002": alertMsg = " 완료되었습니다."; break; case "I003": alertMsg = " 필수입력입니다."; break; case "I004": alertMsg = " 없습니다."; break; case "I005": alertMsg = " 환자입니다."; break; case "I006": alertMsg = " 가능합니다."; break; case "I007": alertMsg = " 확인하십시오."; break; case "I008": alertMsg = " 하십시오."; break; case "I009": alertMsg = " 입니다."; break; case "I010": alertMsg = " 있습니다."; break; case "I011": alertMsg = " 않습니다.";break; case "C001": alertMsg = " 입력하십시오."; break; case "C002": alertMsg = " 선택하십시오."; break; case "C003": alertMsg = " 진행하십시오."; break; case "E001": alertMsg = " 할 수 없습니다."; break; case "E002": alertMsg = " 권한이 없습니다."; break; case "E003": alertMsg = " 초과하였습니다."; break; case "E004": alertMsg = " 일치하지 않습니다."; break; case "E005": alertMsg = " 선택되었습니다."; break; case "E006": alertMsg = " 중복되었습니다."; break; case "E007": alertMsg = " 않았습니다."; break; case "E008": alertMsg = " 입니다."; break; case "E009": alertMsg = " 실패하였습니다."; break; case "E010": alertMsg = " 사원만 가능합니다."; break; case "E011": alertMsg = " 이전만 가능합니다."; break; case "E012": alertMsg = " 이후만 가능합니다."; break; case "E013": alertMsg = " 데이터가 없습니다."; break; case "E014": alertMsg = " 존재하지 않습니다."; break; case "E015": alertMsg = " 자리까지만 가능합니다."; break; case "E016": alertMsg = " 유효하지 않습니다."; break; case "Q001": alertMsg = " 삭제 하시겠습니까?"; break; case "Q002": alertMsg = " 저장 하시겠습니까?"; break; case "Q003": alertMsg = " 계속 진행하시겠습니까?"; break; case "Q004": alertMsg = " 실행 하시겠습니까?"; break; case "Q005": alertMsg = " 조회 하시겠습니까?"; break; case "Q006": alertMsg = " 확정 하시겠습니까?"; break; case "Q007": alertMsg = " 취소 하시겠습니까?"; break; case "Q008": alertMsg = " 추가 하시겠습니까?"; break; case "Q009": alertMsg = " 적용 하시겠습니까?"; break; case "Q010": alertMsg = " 초기화 하시겠습니까?"; break; case "Q011": alertMsg = " 확인 하시겠습니까?"; break; case "Q012": alertMsg = " 수정 하시겠습니까?"; break; case "Q013": alertMsg = " 선택 하시겠습니까?";break; case "Q014": alertMsg = " 등록 하시겠습니까?";break; case "Q015": alertMsg = " 재요청 하시겠습니까?";break; case "Q016": alertMsg = " 종결된 기록지입니다. 기록내용을 수정하시겠습니까?";break; case "S001": alertMsg = " 하시려면 예(Yes)\n아니면 아니오(No)를 선택하십시오."; break; case "S002": alertMsg = " 저장하시려면 예(Yes)\n변경하시려면 아니오(No)를 선택하십시오"; break; case "S003": alertMsg = " 하시려면 예(Yes)\n" + pOptMsg + " 하시려면 아니오(No)를 선택하십시오.";break; case "S004": alertMsg = " 하시려면 예(Yes)\n아니면 아니오(No)\n무시하시려면 취소를 선택하십시오";break; case "S005": alertMsg = " 종결된 기록지입니다. 작업유형을 선택하십시오\n\n예 : 기록수정 / 아니오 : 신규기록생성";break; case "S006": alertMsg = " 하시려면 예(Yes)\n" + pOptMsg.split("|")[0] + " 하시려면 아니오(No)\n" + pOptMsg.split("|")[1] + " 하시려면 취소를 선택하십시오";break; case "S007": alertMsg = " \n재등록 하시려면 예(Yes), " + pOptMsg.split("|")[0] + " 아니오(No), " + pOptMsg.split("|")[1] + " 취소를 선택하십시오.";break; default : alertMsg = ""; } if(pOptMsg == null || pOptMsg == ""){ msgData = pMessage+alertMsg; } else { if (pCode == "S003" || pCode == "S006" || pCode == "S007") { msgData = pMessage+alertMsg; } else { msgData = pMessage+alertMsg + "\n" + pOptMsg; } } body.disabled = true; msgRtn = window.alert( msgData, msgTitle, msgType ); body.disabled = false; return msgRtn; } /*-------------------------------------------------------------------- //사용자 세션정보 제공함수들 ---------------------------------------------------------------------*/ /** * @----------------------------------------------------------------------------------- * @desc : 사용자 세션정보 제공함수 UserId * @param : * @return : * @----------------------------------------------------------------------------------- */ function getUserId() { return getUserInfo("userid"); } /** * @----------------------------------------------------------------------------------- * @desc : 사용자 세션정보 제공함수 UserName * @param : * @return : * @----------------------------------------------------------------------------------- */ function getUserName() { return getUserInfo("usernm"); } /** * @----------------------------------------------------------------------------------- * @desc : 사용자 세션정보 제공함수 UserInfo * @param : * @return : * @----------------------------------------------------------------------------------- */ function getUserInfo(key) { if ( getGlobalVariable("userinfos") == "" ) { //setDefaultUserInfo(); } return getGlobalVariable(key); } /** * @----------------------------------------------------------------------------------- * @desc : 사용자 세션정보 제공함수 userinfos * @param : * @return : * @----------------------------------------------------------------------------------- */ function getUserInfos() { if ( getGlobalVariable("userinfos") == "" ) { //setDefaultUserInfo(); } return getGlobalVariable("userinfos"); } /** * @----------------------------------------------------------------------------------- * @desc : 사용자 정보를 셋팅 * @param : * @return : * @----------------------------------------------------------------------------------- */ function setDefaultUserInfo() { var userInfoKeyStr="userid|usernm|posinstcd|posinstnm|posdeptcd|posdeptnm|dutplceinstcd|dutplceinstnm|dutplcecd|dutplcenm|jobkindcd|jobkindnm|jobposcd|jobposnm|jobrespcd|jobrespnm|prfshipflagcd|prfshipflagnm|licnsno|specordyn|deptabbr|orddeptflag|wardflag|systemcd|systemnm|systeminstcd|systeminstnm|logindt|kmiip|kmiport|usergrp|ipaddr|dutinstcd|dutinstnm|dutunitcd|dutunitnm|mpphonno|orginstcd|orginstnm|orgdeptcd|orgdeptnm|userkindcd|ordsupdeptcd"; var userInfoKeyArr = userInfoKeyStr.split("|"); var userInfoStr = ""; try { var fso = new ActiveXObject("Scripting.FileSystemObject"); var f = fso.GetFile("session.txt"); var ts = f.OpenAsTextStream(1); userInfoStr = ts.ReadLine(); ts.Close(); } catch(e) { } var userInfoArr = userInfoStr.split("|"); var len = userInfoKeyArr.length; setGlobalVariable("anonymous","true"); // 사용자세션정보가 미리보기용임 for(i=0;i="011" && imageKey <= "018")|| imageKey == "103")){ imageKey = "001"; }*/ return imageKey; } /** * @----------------------------------------------------------------------------------- * @desc : loading 화면 * @param : * @return : * @----------------------------------------------------------------------------------- */ function openLoadingBar(msg){ setParameter("msg", msg); open("SPZZZ00400", "", "", "", "", "", "","width:327px; height:121px; caption:hidden; resize:false;"); //open("SPZZZ00400", monNo, "", "", "", "", "","width:327px; height:121px; caption:hidden; resize:false; align:center;"); //open("SPZZZ00400", "", "", "", "SPZZZ00400", "/root/properties/loadingmsg", "/root/main/msg", "width:327px; height:121px; caption:hidden; align:center;" ); } /** * @----------------------------------------------------------------------------------- * @desc : closing 화면 * @param : * @return : * @----------------------------------------------------------------------------------- */ function closeLoadingBar(){ var child = getChildWindow("SPZZZ00400"); if(child != null) { child.close(); } } /*------------------------------------------------------------------- //Caching API ---------------------------------------------------------------------*/ var gvCommonCachePath="/root/hidden/common/cache"; /** * @----------------------------------------------------------------------------------- * @desc : Cache에서 itemname으로 저장된 인스턴스 내용을 resultref로 복사한다. * 해당 itemname으로 복사가 되었으면 true를 복사된 내용이 없으면 false를 반환한다. * - itemname : cache에서 가져올 내용에 대한 key * - resultref : cache의 내용을 하위로 복사 * @param : * @return : true * @----------------------------------------------------------------------------------- */ function copyFromCache(itemname,resultref) { var viewerObj = getViewer("sysMessage"); if (viewerObj == null) { return false; } //itemnode = viewerObj.window.instance1.selectSingleNode(gvCommonCachePath+"/"+itemname); var srcPath = gvCommonCachePath+"/"+itemname; model.makeNode(resultref); // 복사할 resultref 노드 생성 // Cache 존재 여부 확인 var itemnode = viewerObj.window.instance1.selectSingleNode(srcPath); if (itemnode == null) { return false; } else { // 유효 기간 확인 var dueDate = itemnode.getAttribute("duedate"); var curDate = (new Date()).valueOf(); if (dueDate < curDate) { // 유효 기간 지남 return false; } } // resultref 로 복사 model.copyNode(resultref,itemnode); return true; } /** * @----------------------------------------------------------------------------------- * @desc : resultref 하위의 인스턴스 내용을 cache에 저장한다. * - itemname : cache에 담을 내용에 대한 Key * - resultref : 하위 인스턴스를 cache로 복사 * - 유효기간 : 분 (디폴트는 10시간) * @param : * @return : * @----------------------------------------------------------------------------------- */ function storeIntoCache(itemname,resultref,duemin) { var viewerObj = getViewer("sysMessage"); if (viewerObj == null) { return; } var destPath = gvCommonCachePath+"/"+itemname; viewerObj.window.model.makeNode(destPath); // 복사할 Cache 노드 생성 // resultref 존재 여부 확인 var itemnode = instance1.selectSingleNode(resultref); if (itemnode == null) { return; } // Cache로 복사한 후 유효기간을 attribute로 지정 viewerObj.window.model.copyNode(destPath,itemnode); itemnode = viewerObj.window.instance1.selectSingleNode(destPath); if (itemnode != null) { var dueDate = (new Date()).valueOf(); if (duemin == null) { duemin = 600; // 10 hours } dueDate = dueDate + duemin*60*1000; itemnode.setAttribute("duedate",dueDate); } } /** * @----------------------------------------------------------------------------------- * @desc : EMR 에서 제공하는 각종 기록지, 처방화면등을 타업무에서 사용시 구분하기 위한 진입점 함수로 아래 화면을 통해 여러가지 화면으로 분기될 수 있다. * EMR진료 기록지 조정 * modal로 화면에 숨겨진 팝업을 띄운다. 여러화면 동시에 open되어, submit간의 충돌을 방지한다. * @param : scrnid : 화면ID * @return : * @author : 오지훈(2008.07.28 공통에 추가-김기호) * @----------------------------------------------------------------------------------- */ function openEmrScrn(scrnid){ setParameter("SPMMB08400_scrnid", scrnid); modal("SPMMB08400", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;"); return true; } /** * @----------------------------------------------------------------------------------- * @desc : model.download() 확장. 다운로드 경로에 한글이 존재할 경우 encodeURI() 로 감싸야 하는 불편함제거를 위함 * @ * @param : submitid - 다운로드를 실행할 서브밋 아이디 * @ param - 서브밋 실행시 필요한 파라메터 * @ localfile - 로컬에 저장할 파일이름(& 로 시작해야 하며 각 파라메터는 &로 구분해야 한다. - url) * @ showui - 다운로드시 UI 를 보여줄 것인지여부(옵션) * @return : * @author : 김기호(2008.11.12) * @----------------------------------------------------------------------------------- */ function download(submitid, param, localfile, showui) { if (showui == null) { showui = true; } model.download(encodeURI(getActionURL(submitid) + param), localfile, showui); } /** * @----------------------------------------------------------------------------------- * @desc : DOMActivate * @param : * @return : * @----------------------------------------------------------------------------------- */ function DOMActivate(){ if(checkOpener()){ if(opener.javascript.getParameter("domactivate") == "true"){ var btnobj = document.all.item(event.target); var btnid = btnobj.attribute("id"); if(btnid.substring(0, 4) == "btn_"){ opener.javascript.addBtnID(btnid); } } } } /** * @----------------------------------------------------------------------------------- * @desc : 버튼 객체 참조 * @param : * @return : * @----------------------------------------------------------------------------------- */ function btnObj(btnID, btnTxt){ this.btnID = btnID; this.btnTxt = btnTxt; } /** * @----------------------------------------------------------------------------------- * @desc : 버튼 컨트롤 정보 * @param : * @return : * @----------------------------------------------------------------------------------- */ function getBtnCtrlInfo(){ var cnt = 0; var ctrlID; var loopcnt = document.controls.length; var btnCtrlArr = new Array(); for(var i = 0; i < loopcnt; i++){ ctrlID = document.controls.item(i); if(ctrlID.attribute("class").substring(0, 3)=="btn"){ btnCtrlArr[cnt] = new btnObj(ctrlID.attribute("id"), ctrlID.attribute("text")); cnt++; } } /* btnCtrlArr 객체의 정보를 가져와서 출력해 본다. for(var i = 0; i < btnCtrlArr.length; i++){ alert(btnCtrlArr[i].btnID + " : " + btnCtrlArr[i].btnTxt); }*/ return btnCtrlArr; } /** * @----------------------------------------------------------------------------------- * @desc : 일일기준과 1회 기준의 용량과 수량을 보여주는 것을 결정하여 결과를 리턴함) * @param : option : A: 모두 보여줌 * B: 1일 기준으로 보여줌 * C: 1회 기준으로 보여줌 * D: 병원의 기준값을 리턴함 * E: 용량중 일일용량만 보여주고 일회 용량은 숨기는 것으로 한다. * F: 용량중 일회용량만 보여주고 일일 용량은 숨기는 것으로 한다. * G: 수량중 일일 수량만 보여준다. 일회 수량은 Hidden * H: 수량중 일회 수량은 보여주고 일회수량은 Hidden * grd_obj : 설정할 그리드를 리턴한다. * colnm_size : 컬럼 사이즈를 적어준다. * comnm_vol1 : 1일 총용량 컬럼 * colnm_qty1 : 1일 수량 컬럼 * comnm_vol2 : 1회 총용량 컬럼 * colnm_qty2 : 1회 수량 컬럼 * colnm_size_qty : 수량 컬럼 사이즈를 적어준다. * @----------------------------------------------------------------------------------- */ function grdBaseColHidn(option, grd_obj, colnm_size, colnm_vol1, colnm_qty1, colnm_vol2, colnm_qty2, colnm_size_qty) { var hardcd = ""; var sysMessageobj = getViewer("sysMessage"); if (sysMessageobj != null) { //진상찬: 직접조회한 hardcd가져오도록 수정 //hardcd = sysMessageobj.window.instance1.selectSingleNode("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno='230']/hardcd").text; hardcd = model.getValue("/root/hidden/grdHardcd/hardcd/hardcd"); } if (option == null || option == "" || option == "undefined") { option = hardcd; } if (colnm_size == null || colnm_size == "" || colnm_size == "undefined") { sColnm_size = 37; } else { sColnm_size = colnm_size; } if (grd_obj == null || grd_obj == "" || grd_obj == "undefined") { sGrd_objnm = "grd_prcplist"; } else { sGrd_objnm = grd_obj; } if (colnm_vol1 == null || colnm_vol1 == "" || colnm_vol1 == "undefined") { sColnm_vol1 = "prcpvol"; } else { sColnm_vol1 = colnm_vol1 } if (colnm_qty1 == null || colnm_qty1 == "" || colnm_qty1 == "undefined") { sColnm_qty1 = "prcpqty"; } else { sColnm_qty1 = colnm_qty1 } if (colnm_vol2 == null || colnm_vol2 == "" || colnm_vol2 == "undefined") { sColnm_vol2 = "drprcpetc7"; } else { sColnm_vol2 = colnm_vol2; } if (colnm_qty2 == null || colnm_qty2 == "" || colnm_qty2 == "undefined") { sColnm_qty2 = "drprcpetc8"; } else { sColnm_qty2 = colnm_qty2; } if (colnm_size_qty == null || colnm_size_qty == "" || colnm_size_qty == "undefined") { sColnm_size_qty = sColnm_size; } else { sColnm_size_qty = colnm_size_qty; } // 둘다 보여준다. if (option =="A") { // 그리드명이 있을 경우 if (grd_obj == null || grd_obj == "" || grd_obj == "undefined") { document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol1)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty1)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol2)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty2)) = false; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol1)) = sColnm_size; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty1)) = sColnm_size_qty; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol2)) = sColnm_size; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty2)) = sColnm_size_qty; } // 일일 용량을 기준으로 보여준다. } else if (option =="B") { document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol1)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty1)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol2)) = true; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty2)) = true; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol1)) = sColnm_size; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty1)) = sColnm_size_qty; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol2)) = 0; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty2)) = 0; // 일회 용량을 기준으로 보여준다. } else if (option =="C") { document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol1)) = true; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty1)) = true; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol2)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty2)) = false; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol1)) = 0; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty1)) = 0; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol2)) = sColnm_size; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty2)) = sColnm_size_qty; // 기준값을 리턴한다. } else if (option =="D") { // 기준값을 가지고 컬럼의 상태를 결정한다. return hardcd } else if (option =="E") { document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol1)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol2)) = true; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol1)) = sColnm_size; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol2)) = 0; } else if (option =="F") { document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol1)) = true; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol2)) = false; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol1)) = 0; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol2)) = sColnm_size; } else if (option =="G") { document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty1)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty2)) = true; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty1)) = sColnm_size_qty; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty2)) = 0; } else if (option =="H") { document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty1)) = true; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty2)) = false; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty1)) = 0; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty2)) = sColnm_size_qty; } else { document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol1)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty1)) = false; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_vol2)) = true; document.all(sGrd_objnm).colHidden(document.all(sGrd_objnm).colRef(sColnm_qty2)) = true; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol1)) = sColnm_size; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty1)) = sColnm_size_qty; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_vol2)) = 0; document.all(sGrd_objnm).colWidth(document.all(sGrd_objnm).colRef(sColnm_qty2)) = 0; } } ///////////////////////////////////////////////////// //DateHelp() ///////////////////////////////////////////////////// /** * @desc : 문자열 날짜를 Date로 반환 *
 *     var date = "2002-03-05".toDate("YYYY-MM-DD")
 * 
* @param : pPattern - Date를 표현하고 있는 현재의 String을 pattern으로 표현한다. *
 *     # syntex
 *
 *       YYYY : year(4자리)
 *       YY   : year(2자리)
 *       MM   : month in year(number)
 *       DD   : day in month
 *       hh   : hour in day (0~23)
 *       mm   : minute in hour
 *       ss   : second in minute
 *       SS   : millisecond in second
 *
 *     주의) 이 중에서 YYYY(YY), MM, DD 는 반드시 있어야 한다.
 * 
* @return : 변환된 Date Object. * @--------------------------------------------------- */ function toDate(pPattern) { var index = -1; var year; var month; var day; var hour = 0; var min = 0; var sec = 0; var ms = 0; if(isNull(pPattern)) pPattern = "YYYYMMDD"; if ((index = pPattern.indexOf("YYYY")) == -1 ) { index = pPattern.indexOf("YY"); year = "20" + this.substr(index, 2); } else { year = this.substr(index, 4); } index = pPattern.indexOf("MM"); month = this.substr(index, 2); index = pPattern.indexOf("DD"); day = this.substr(index, 2); if ((index = pPattern.indexOf("hh")) != -1 ) { hour = this.substr(index, 2); } if ((index = pPattern.indexOf("mm")) != -1 ) { min = this.substr(index, 2); } if ((index = pPattern.indexOf("ss")) != -1 ) { sec = this.substr(index, 2); } if ((index = pPattern.indexOf("SS")) != -1 ) { ms = this.substr(index, 2); } return new Date(year, month - 1, day, hour, min, sec, ms); } /** * @desc : 현재날짜 반환 * @param : * @param : * @return : YYYYMMDD * @--------------------------------------------------- */ function getCurrentDate() { var sDate = getNewDate(); rtnDate = sDate.getFullYear(); rtnDate = rtnDate.toString() + (( sDate.getMonth() + 1 > 9 ) ? sDate.getMonth() + 1 : "0" + (sDate.getMonth() + 1)); rtnDate = rtnDate.toString() + (( sDate.getDate() > 9 ) ? sDate.getDate() : "0" + sDate.getDate()) ; return rtnDate; } /** * @desc : Date type을 문자 포맷으로 바꾼다. *
 *     default pattern은 "YYYYMMDD"이다.
 *
 *     함수 호출시 다음과 같이 사용한다.
 *
 *          1) getDateFormat()        --> default로 YYYYMMDD형태로 반환한다.
 *          2) getDateFormat("YYYY/MM/DD") --> pattern 형식으로 반환한다.
 *
 * 
* @param : pPattern - syntex 참조 *
 *
 *     # syntex
 *
 *       YYYY : hour in am/pm (1~12)
 *       MM   : month in year(number)
 *       MON  : month in year(text)  예) "January"
 *       DD   : day in month
 *       DAY  : day in week  예) "Sunday"
 *       HH   : hour in am/pm (1~12)
 *       hh   : hour in day (0~23)
 *       mm   : minute in hour
 *       ss   : second in minute
 *       SS   : millisecond in second
 *       a    : am/pm  예) "AM"
 *
 * 
* * @return : Pattern 형태의 문자열 * @--------------------------------------------------- */ function getDateFormat(pPattern) { var GLB_MONTH_IN_YEAR = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); var GLB_DAY_IN_WEEK = new Array("Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"); var year = this.getFullYear(); var month = this.getMonth() + 1; var day = this.getDate(); var dayInWeek = this.getDay(); var hour24 = this.getHours(); var ampm = (hour24 < 12) ? 0 : 1; var hour12 = (hour24 > 12) ? (hour24 - 12) : hour24; var min = this.getMinutes(); var sec = this.getSeconds(); var YYYY = "" + year; var YY = YYYY.substr(2); var MM = (("" + month).length == 1) ? "0" + month : "" + month; var MON = GLB_MONTH_IN_YEAR[month-1]; var DD = (("" + day).length == 1) ? "0" + day : "" + day; var DAY = GLB_DAY_IN_WEEK[dayInWeek]; var HH = (("" + hour12).length == 1) ? "0" + hour12 : "" + hour12; var hh = (("" + hour24).length == 1) ? "0" + hour24 : "" + hour24; var mm = (("" + min).length == 1) ? "0" + min : "" + min; var ss = (("" + sec).length == 1) ? "0" + sec : "" + sec; var SS = "" + this.getMilliseconds(); var a = (a == 0) ? "AM" : "PM"; var dateStr; var index = -1; if (typeof(pPattern) == "undefined") { dateStr = "YYYYMMDD"; } else { dateStr = pPattern; } dateStr = dateStr.replace(/a/g, a); dateStr = dateStr.replace(/YYYY/g, YYYY); dateStr = dateStr.replace(/YY/g, YY); dateStr = dateStr.replace(/MM/g, MM); dateStr = dateStr.replace(/MON/g, MON); dateStr = dateStr.replace(/DD/g, DD); dateStr = dateStr.replace(/DAY/g, DAY); dateStr = dateStr.replace(/hh/g, hh); dateStr = dateStr.replace(/HH/g, HH); dateStr = dateStr.replace(/mm/g, mm); dateStr = dateStr.replace(/ss/g, ss); return dateStr; } /** * @desc : 현재날짜 시간 서버시간으로 변경 * @param : * @param : * @return : date * @--------------------------------------------------- */ function getNewDate(){ var rtnDate = new Date(); var timediff = getGlobalVariable("timediff"); var serverInterval = 0; if(!isNull(timediff) && !isNaN(timediff)){ serverInterval = parseInt(timediff); } rtnDate.setTime(rtnDate.getTime() + serverInterval); return rtnDate; } /** * @desc : 특정일자의 상대일자(+/-)를 계산 * @param : pNum - 구하고자 하는 상대일 수 (+/-) * @param : pKind - 구하고자 하는 기준(위 참조) *
 *       pKind에 따른 상대일자를 계산한다.
 *
 *           "Y" : 년
 *           "M" : 월
 *           "D" : 일
 *           "h" : 시
 *           "m" : 분
 *           "s" : 초
 *
 *       default는 "D"
 *
 *       함수 호출시 다음과 같이 사용한다.
 *
 *          1) date.getAddDate(10)       --> default로 일에 대한 상대일을 구한다.
 *          2) date.getAddDate(10, "Y")  --> 년도에 대한 상대일을 구한다.
 * 
* @return : Date * @--------------------------------------------------- */ function getAddDate(pNum, pKind) { var rtnDate = this; if(isNull(pKind)) pKind = "D"; switch(pKind){ case "Y" : rtnDate.setFullYear(this.getFullYear() + pNum);break; case "M" : rtnDate.setMonth(this.getMonth() + pNum);break; case "D" : rtnDate.setDate(this.getDate() + pNum);break; case "h" : rtnDate.setHours(this.getHours() + pNum);break; case "m" : rtnDate.setMinutes(this.getMinutes() + pNum);break; case "s" : rtnDate.setSeconds(this.getSeconds() + pNum);break; } return rtnDate; } /** * @--------------------------------------------------- * @desc : 값이 없는지 체크 * @param : 체크할 문자열 * @return : true or false * @--------------------------------------------------- */ function isNull(str){ return ((str == null || str == "" || str == "undefined") ? true:false); } ////////////////////////////////////////// //tfHelper ///////////////////////////////////////// //=============================================================================================== // 전역 변수 //=============================================================================================== var gvFormUpdateYN = false; // xforms_value_changed 관련 boolen 변수 /************************************************************************************************ 함수명 : setCSVToNode () 인자 : String destRef - 목적 노드 경로 String CSV - CSV * getNodeListCSV() 함수 return value String [nodeSetName] - 노드셋 네임 결과값 : 함수설명 : 목적노드(destRef)에 CSV를 makeValue 해준다. ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 04. 13 ************************************************************************************************/ function setCSVToNode(destRef, CSV, nodeSetName) { var sColSep = "▦"; var sRowSep = "▩"; // 헤더값, 즉 컬럼명을 얻어온다 var nodeNameArray = CSV.split(sRowSep)[0].split(sColSep); // 컬럼의 개수를 얻어온다 var nodeNameArrayCnt = nodeNameArray.length; // tempDestNode if( nodeSetName == null || nodeSetName == "") nodeSetName = "list"; // nodeSetName라는 이름의 element를 생성한다 var tmpDestNode = instance1.createElement(nodeSetName); var tmpDestChildNode; var i, j; for( i = 0; i < nodeNameArrayCnt; i++ ) { // nodeNameArray[i]의 이름으로 element를 생성한다(즉 컬럼명 하나하나로 element를 생성한다) tmpDestChildNode = instance1.createElement(nodeNameArray[i]); // tmpDestNode에 tmpDestChildNode의 값을 복사한다 model.duplicate(tmpDestNode, tmpDestChildNode); } // 헤더값, 즉 컬럼명과 선택한 데이터들을 로우(행)단위로 잘라서 얻어온다 var CSVArray = CSV.split(sRowSep); // CSVArray에서 얻어온 로우(행)의 갯수를 가지고 온다(데이터가 2개이면 컬럼명 까지 해서 총 3을 얻어온다) var CSVArrayCnt = CSVArray.length - 1; // destRef노드를 반환한다 var srcNode = instance1.selectSingleNode(destRef); var nodeValueArray; // 시작점을 1로 하는 이유는 컬럼명은 필요 없기 때문에 1부터 해서 데이터만 뽑아오기 위해서이다 for( i = 1; i < CSVArrayCnt; i++ ) { // 첫번째 로우(행)의 데이터를 가지고 온다 nodeValueArray = CSVArray[i]; for ( j = 0; j < nodeNameArrayCnt; j++ ) { // 각 로우(행)의 데이터를 컬럼 단위로 하나하나 가지고 와서 tmpDestNode의 자식노드에 하나하나 넣어준다 tmpDestNode.childNodes.item(j).text = nodeValueArray.split(sColSep)[j]; } model.duplicate(srcNode, tmpDestNode); } } /************************************************************************************************ 함수명 : addComboItem () 인자 : String comboID - 해당 콤보 아이디 String label - 추가 할 아이템 Lavel String value - 추가 할 아이템 Value String [postion] - 추가 할 위치( "above" | "below" ) 결과값 : 함수설명 : 콤보 아이템 추가 함수 ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 08. 21 ************************************************************************************************/ function addComboItem( comboID, label, value, position ) { var comboObj = document.all.item(comboID); // Combo ItemSet 정보 var comboItemNodeSet = comboObj.choices.itemset.attribute("nodeset"); var comboLabelRef = comboObj.choices.itemset.label.attribute("ref"); var comboValueRef = comboObj.choices.itemset.value.attribute("ref"); var nodeNn = instance1.selectSingleNode(comboItemNodeSet); if (nodeNn == null) { model.makeNode(comboItemNodeSet); model.makeNode(comboItemNodeSet+"/"+comboLabelRef); model.makeNode(comboItemNodeSet+"/"+comboValueRef); position = "init"; } // Item 노드 생성 var itemNode = instance1.createNode("element", instance1.selectSingleNode(comboItemNodeSet).nodeName, ""); var labelNode = instance1.createNode("element", comboLabelRef, ""); var valueNode = instance1.createNode("element", comboValueRef, ""); if( label == null || label == "" ) label = "- 전 체 -"; //[컴스퀘어] node.value을 순수에서는 지원하지 않습니다. (비표준) //labelNode.value = label; labelNode.nodeValue = label; itemNode.appendChild(labelNode); if( value == null || value == "" ) value = ""; //[컴스퀘어] node.value을 순수에서는 지원하지 않습니다. (비표준) //valueNode.value = label; valueNode.nodeValue = value; itemNode.appendChild(valueNode); if( position == null || position == "" ) position = "above"; var destNode = instance1.selectSingleNode(comboItemNodeSet); var pDestNode = destNode.parentNode; if( position == "above" ) { pDestNode.insertBefore(itemNode, destNode); } else if ( position == "init" ) { pDestNode.insertBefore(itemNode, destNode); pDestNode.removeChild(destNode); } else { pDestNode.appendChild(itemNode); } comboObj.refresh(); } /************************************************************************************************ 함수명 : setImageRefInstance () 인자 : String xPath - 노드 XPath 결과값 : 함수설명 : 이미지 컨트롤이 참조하는 ref 인스턴스 노드(xpath)의 type 속성을 "xsd:base64Binary"로 설정한다. ************************************************************************************************ 작 성 자 : 김 형도 작 성 일 : 2007. 02. 23 ************************************************************************************************/ function setImageRefInstance(xpath) { var node = instance1.selectSingleNode(xpath); if( node == null ) return; node.setAttribute("type","xsd:base64Binary"); } /************************************************************************************************ 함수명 : setInputNodeCurText () 인자 : String mask - 제거할 마스크 문자 결과값 : 함수설명 : 인풋에 ref 노드에 현재 label setValue * 참고) 인풋 컨트롤은 포커스아웃 시점에 노드에 값이 반영됨 * 주의) ev:event="onkeyup"에 적용 ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 02. 09 ************************************************************************************************/ function setInputNodeCurText( mask ) { var inputID = event.target; var inputObj = document.controls(inputID); var inputRef = inputObj.attribute("ref"); if( mask == null ) model.setValue(inputRef, inputObj.currentText); else model.setValue(inputRef, inputObj.currentText.removeMask(mask)); inputObj.refresh(); setFormUpdate(); } /************************************************************************************************ 함수명 : setFormUpdate () 인자 : 결과값 : 함수설명 : gvFormUpdateYN 전역 변수 true 설정 ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 04. 01 ************************************************************************************************/ function setFormUpdate() { gvFormUpdateYN = true; } /************************************************************************************************ 함수명 : isDataCell () 인자 : 결과값 : Boolean true or false 함수설명 : datagrid click or dbclick 시점에 현재 click target이 data 영역인지 check ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 04. 12 ************************************************************************************************/ function isDataCell() { var gridObj = event.ptarget.parent; if( gridObj.isCell(event.target) && gridObj.row >= gridObj.fixedRows && gridObj.col >= gridObj.fixedCols) { return true; } else return false; } /************************************************************************************************ 함수명 : copyNodeType () 인자 : String strDest - 목적 노드 경로 String strSrc - 소스 노드 경로 String [mode] - copy 방식( "replace" | "after" | "before" ) Object [destModel] - 목적 노드 모델 Object [srcModel] - 목적 노드 모델 결과값 : 함수설명 : 목적 노드에 소스 하위 노드들을 mdoe방식에 따라 copy 함. ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 03. 21 수 정 일 : 2007. 04. 10 ( - 함수명 변경 : copyNodeset() -> copyNodeType() ) ************************************************************************************************/ function copyNodeType(strDest, strSrc, mode, destModel, srcModel) { if( typeof(destModel) == "object" || typeof(destModel) == "undefined" ) { if( destModel == null ) { destModel = model; } } else { if( destModel == "" ) { destModel = model; } } //[컴스퀘어][수정] model.instacne1 구조를 지원하지 않습니다. var destNode = destModel.instances(0).selectSingleNode(strDest); if( destNode == null ) return; var destChildNodeList = destNode.childNodes; if( typeof(srcModel) == "object" || typeof(srcModel) == "undefined" ) { if( srcModel == null ) { srcModel = model; } } else { if( srcModel == "" ) { srcModel = model; } } //[컴스퀘어][수정] model.instacne1 구조를 지원하지 않습니다. var srcNode = srcModel.instances(0).selectSingleNode(strSrc); if( srcNode == null ) return; var cSrcNode = srcNode.cloneNode(true); var cSrcChildNodeList = cSrcNode.childNodes; var cSrcChildNode; if( cSrcChildNodeList.length == 0 ) return; // mode = "replace" | "after" | null if( mode != "before" ) { if( mode == "replace" || mode == null ) { removeChildren(strDest, destModel) } for (var i=0; i= 0; i-- ) { //[컴스퀘어][수정] model.instacne1 구조를 지원하지 않습니다. destNode = destModel.instances(0).selectSingleNode(strDest); cSrcChildNode = cSrcChildNodeList.item(i); model.duplicate(destNode, cSrcChildNode, "*[1]"); } } } /************************************************************************************************ 함수명 : removeChildren () 인자 : String destNodePath - 목적 노드 경로 Object [destModel] - 목적 노드 모델 결과값 : 함수설명 : 경로의 노드를 삭제 후 동일 노드를 생성 한다. ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 03. 21 ************************************************************************************************/ function removeChildren( destNodePath, destModel ) { var modelObj; if( destModel == null ) { modelObj = model; } else modelObj = destModel; // 1 /* modelObj.removenode(xPath); modelObj.makeNode(xPath); */ // 2 var node = modelObj.instances(0).selectSingleNode(destNodePath); var childNodeList = node.childNodes; var childNode; for (var i=0; i< childNodeList.length; i++){ childNode = childNodeList.item(i); node.removeChild( childNode ); } } /************************************************************************************************ 함수명 : setCSVToNode () 인자 : String destRef - 목적 노드 경로 String CSV - CSV * getNodeListCSV() 함수 return value String [nodeSetName] - 노드셋 네임 결과값 : 함수설명 : 목적노드(destRef)에 CSV를 makeValue 해준다. ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 04. 13 ************************************************************************************************/ function setCSVToNode(destRef, CSV, nodeSetName) { var sColSep = "▦"; var sRowSep = "▩"; // 헤더값, 즉 컬럼명을 얻어온다 var nodeNameArray = CSV.split(sRowSep)[0].split(sColSep); // 컬럼의 개수를 얻어온다 var nodeNameArrayCnt = nodeNameArray.length; // tempDestNode if( nodeSetName == null || nodeSetName == "") nodeSetName = "list"; // nodeSetName라는 이름의 element를 생성한다 var tmpDestNode = instance1.createElement(nodeSetName); var tmpDestChildNode; var i, j; for( i = 0; i < nodeNameArrayCnt; i++ ) { // nodeNameArray[i]의 이름으로 element를 생성한다(즉 컬럼명 하나하나로 element를 생성한다) tmpDestChildNode = instance1.createElement(nodeNameArray[i]); // tmpDestNode에 tmpDestChildNode의 값을 복사한다 model.duplicate(tmpDestNode, tmpDestChildNode); } // 헤더값, 즉 컬럼명과 선택한 데이터들을 로우(행)단위로 잘라서 얻어온다 var CSVArray = CSV.split(sRowSep); // CSVArray에서 얻어온 로우(행)의 갯수를 가지고 온다(데이터가 2개이면 컬럼명 까지 해서 총 3을 얻어온다) var CSVArrayCnt = CSVArray.length - 1; // destRef노드를 반환한다 var srcNode = instance1.selectSingleNode(destRef); var nodeValueArray; // 시작점을 1로 하는 이유는 컬럼명은 필요 없기 때문에 1부터 해서 데이터만 뽑아오기 위해서이다 for( i = 1; i < CSVArrayCnt; i++ ) { // 첫번째 로우(행)의 데이터를 가지고 온다 nodeValueArray = CSVArray[i]; for ( j = 0; j < nodeNameArrayCnt; j++ ) { // 각 로우(행)의 데이터를 컬럼 단위로 하나하나 가지고 와서 tmpDestNode의 자식노드에 하나하나 넣어준다 tmpDestNode.childNodes.item(j).text = nodeValueArray.split(sColSep)[j]; } model.duplicate(srcNode, tmpDestNode); } } /************************************************************************************************ 함수명 : getNodeListCSV () 인자 : Object nodeList - 노드 리스트 결과값 : String rCSV 예) a▦b▦c▩true▦1▦1▩true▦3▦3▩true▦5▦5▩ 함수설명 : 노드리스트를 CSV로 반환한다. ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 04. 13 ************************************************************************************************/ function getNodeListCSV(nodeList) { if( nodeList.length == 0 ) return; var sColSep = "▦"; var sRowSep = "▩"; var rCSV = ""; var childNodeList = nodeList.item(0).childNodes; var childNodeCnt = childNodeList.length; if( childNodeCnt == 0 ) return; var i, j; for( i = 0; i < childNodeCnt - 1; i++) { rCSV += childNodeList.item(i).nodeName + sColSep; } rCSV += childNodeList.item(i).nodeName + sRowSep; var node; for (var j=0; j 9 ) ? sDate.getHours() : "0" + sDate.getHours()); rtnTime = rtnTime.toString() + (( sDate.getMinutes() > 9 ) ? sDate.getMinutes() : "0" + sDate.getMinutes()); rtnTime = rtnTime.toString() + (( sDate.getSeconds() > 9 ) ? sDate.getSeconds() : "0" + sDate.getSeconds()); return rtnTime; } /** * @desc : 현재날짜 시간 반환 * @param : * @param : * @return : YYYYMMDD HHMMSS * @--------------------------------------------------- */ function getCurrentDateTime(){ return getCurrentDate() + " " + getCurrentTime(); } /** * @group : * @ver : 2007.05.01 * @by : 이은영 * @--------------------------------------------------- * @type : function * @access : public * @desc : 날짜 계산(기준일자를 기준으로 입력일자만큼 전 날짜를 찾아오기) ex) getDateCalc("20070501",6) * @param : pDate : 기준 날짜 * @param : pDay : 일자 * @param : pFlag : "-" - 전 날짜, "+" - 이후 날짜 (default : "-") * @return : String : 날짜 * @--------------------------------------------------- */ function getDateCalc(pDate, pDay, pFlag){ var sDay = new Date(pDate.substr(0,4),pDate.substr(4,2)-1,pDate.substr(6,2)); if(pFlag == null || pFlag == ""){ pFlag = "-"; } if(pFlag == "-"){ sDay.setDate(sDay.getDate()-parseInt(pDay)); }else if(pFlag == "+"){ sDay.setDate(sDay.getDate()+parseInt(pDay)); } var sYear = sDay.getYear(); var sMonth = sDay.getMonth()+1; var sday = sDay.getDate(); if(sMonth < 10) sMonth = "0"+sMonth; if(sday < 10) sday = "0"+sday; return sYear.toString()+sMonth.toString()+sday.toString(); } /** * @--------------------------------------------------- * @desc : 옵션에 따라 Date형을 DateTime형 String으로 변환 * @param : pDate - Date 객체 * @param : pMode - 대소문자 구분 없음 *
 *				'기본' - 일자 + 시간,
 				'D'    - 일자,
 				'T'    - 시간,
 				'W'    - 요일,
 				'S'    - 시간 + 초,
 				'A'    - 전체 + 초

 * 
* @return : String "200406081415" * @--------------------------------------------------- */ function getDateTime( pDate, pMode ){ var rtnStr = null; sFDate = pDate.getFullYear(); sFDate = sFDate.toString() + (( pDate.getMonth() + 1 > 9 ) ? pDate.getMonth() + 1 : "0" + (pDate.getMonth() + 1)); sFDate = sFDate.toString() + (( pDate.getDate() > 9 ) ? pDate.getDate() : "0" + pDate.getDate()); sFTime = (( pDate.getHours() > 9 ) ? pDate.getHours() : "0" + pDate.getHours()); sFTime = sFTime.toString() + (( pDate.getMinutes() > 9 ) ? pDate.getMinutes() : "0" + pDate.getMinutes()); sFSec = (( pDate.getSeconds() > 9 ) ? pDate.getSeconds() : "0" + pDate.getSeconds() ); var x = new Array("일", "월", "화", "수", "목", "금", "토"); sWeek = x[pDate.getDay()]; switch( pMode.toUpperCase() ){ case 'D': // YEAR + MONTH + DATE rtnStr = sFDate; break; case 'T': // HOUR + MINUTE rtnStr = sFTime; break; case 'S': // HOUR + MINUTE + SECONDS rtnStr = sFTime + sFSec; break; case 'A': // YEAR + MONTH + DATE + HOUR + MINUTE + SECONDS rtnStr = sFDate + sFTime + sFSec; break; case 'W': // WEEK rtnStr = sWeek; break; default: // YEAR + MONTH + DATE + HOUR + MINUTE rtnStr = sFDate + sFTime; } return rtnStr; } /** * @desc : Kind에 해당하는 요일을 반환 * @param : pKind - 종류 (위 참조) *
 *     kind
 *           "K" or "k" : 한국어 -> 일,월,화,수,목,금,토
 *           "C" or "c" : 한자   -> 日,月,火,水,木,金,土
 *           "E" or "e" : 영어   -> Sun,Mon,Tue,Wed,Thu,Fri,Sat
 *           "N" or "n" : 숫자   -> 0,1,2,3,4,5,6
 * 
* @return : 요일 String (위 참조) * @--------------------------------------------------- */ function getDayOfWeek(pKind) { if(pKind.toUpperCase() == "K") { var week = new Array("일","월","화","수","목","금","토"); return week[this.getDay()]; } else if(pKind.toUpperCase() == "C") { var week = new Array("日","月","火","水","木","金","土"); return week[this.getDay()]; } else if(pKind.toUpperCase() == "E") { var week = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); return week[this.getDay()]; } else if(pKind.toUpperCase() == "N") { return this.getDay() + ""; } return ""; } //model.getXPathValue 대한 안드로이드에서 특정 xpath 함수를 지원하지 않는 오류로 수정 taebum //2011-10-17 오전 10:20:37 function getNodesetCount( nodeSet ) { /* var xPathFunction = "count(" + nodeSet + ")"; return model.getXPathValue(xPathFunction); */ var xnList = instance1.selectNodes(nodeSet); return null != xnList ? xnList.length : 0; } /** * @desc : 환자정보 변수 초기화 * @id : * @event : xforms-ready * @return : void * @authur : */ function COMN_CONT_RECCNTS() { this.pid = ""; this.recfromdt = ""; this.rectodt = ""; this.formrecdeptcd = ""; this.chosflag = ""; this.formrecseq = ""; } /** * @desc : lt, gt 변환 * @id : * @event : * @return : void * @authur : */ function doReplaceLtGt(path) { var nodelist = model.instances(0).selectNodes(path + "[degnitemkind = 'IMG']/reccnts"); var shape = ""; var regLt = /</gi; //정규식 지정 var regGt = />/gi; for (var i = 0; i < nodelist.length; i++) { if (nodelist.item(i).nodeValue.indexOf("<") == 0) { shape = nodelist.item(i).nodeValue.replace(regLt, "<"); nodelist.item(i).nodeValue = shape.replace(regGt, ">"); } } } /** * @desc : 노드셋 카피 * @id : * @event : * @return : * @authur : */ function copyNodeset(strDest, strSrc, mode, destModel, srcModel) { if(mode == null) mode = "replace"; if(destModel == null) destModel = model; if(srcModel == null) srcModel = model; if(mode == "replace") destModel.removeNodeset(strDest);// 대상 노드를 삭제한다. //var destListLen = 0; var destNodeList = destModel.instances(0).selectNodes(strDest); //if(destNodeList != null) var destListLen = destNodeList.length; var srcNodeList = srcModel.instances(0).selectNodes(strSrc); var prepath_strDest = strDest + "["; var idx; for(var i = 0; i < srcNodeList.length; i++) { idx = i + 1 + destListLen; var strDest1 = prepath_strDest + idx + "]"; destModel.makeNode(strDest1); var destNode = destModel.instances(0).selectSingleNode(strDest1); var srcNode = srcNodeList.item(i); var srcChildList = srcNode.childNodes; for(var j = 0; j < srcChildList.length; j++) destNode.appendChild(srcChildList.item(j).cloneNode(true)); } } /** * @desc : 노드셋 찾기 * @id : * @event : * @return : * @authur : */ function findNodeset(srchModel, strPath) { var insXml = srchModel.instances(0); var destNodeList = insXml.selectNodes(strPath); return destNodeList; } /** * @--------------------------------------------------- * @desc : 전체 문장에서 특정 문장이 있는지를 검사하는 함수 * @param : strSrc - 전체 문장 * @param : strFind - 찾을 문장 * @return : boolean * @--------------------------------------------------- */ function isSearchString(strSrc, strFind) { var r, re; re = new RegExp(strFind); r = re.exec(strSrc); if (r) { return true; } return false; } /** * @desc : 메타데이터에서 태그를 삭제한다. * @id : * @event : * @return : * @authur : */ function removeXvgTag(metadata) { var strMeta = metadata; var grpexpSt = new RegExp('(]+>)', 'igm'); var grpexpEd = new RegExp('()', 'igm'); if (grpexpSt.test(strMeta) == true) { strMeta = strMeta.replace(grpexpSt, ''); } if (grpexpEd.test(strMeta) == true) { strMeta = strMeta.replace(grpexpEd, ''); } return strMeta; } /** * @--------------------------------------------------- * @desc : 문자열중의 특정 문자 또는 단어를 찾아 원하는 문자 또는 단어로 치환 *
 *				1. 찾을 단어를 구분자로 분리한 문자열을 저장할 배열 변수지정
 *				2. 치환하여 리턴할 내용을 담을 변수 지정
 *				3. 원본 문자열을 찾을 단어를 구분자로 분리
 *				4. 찾을 단어의 수만큼 loop
 *					- 찾을 단어 대신 대체 단어를 붙이면서 누적
 *				3. 마지막 찾을 단어의 뒷부분 내용 추가.
 *					- 찾을 단어가 없었다면 원본 문자열 전체가 됨
 * 
* @param : findWord - 찾을 단어 * @param : replaceWord - 대체 단어 * @return : rtnSting - 대체하고난 문자열 * @--------------------------------------------------- */ function setReplaceWord( findWord, replaceWord ) { var tempArray; var rtnSting = ""; tempArray = this.split(findWord); for(var i=0; i < tempArray.length-1; i++) { rtnSting += tempArray[i] + replaceWord; } rtnSting += tempArray[tempArray.length-1]; return rtnSting; } /************************************************************************************************ 함수명 : copyNodesetType () 인자 : String strDest - 목적 노드 리스트 경로 String strSrc - 소스 노드 리스트 경로 String [mode] - copy 방식( "replace" | "after" | "before" ) Object [destModel] - 목적 노드 리스트 모델 Object [srcModel] - 목적 노드 리스트 모델 결과값 : 함수설명 : 목적 노드셋에 소스 하위 노드셋들을 mdoe방식에 따라 copy 함. ************************************************************************************************ 작 성 자 : 김 기용 작 성 일 : 2007. 05. 02 ************************************************************************************************/ function copyNodesetType(strDest, strSrc, mode, destModel, srcModel) { if( typeof(destModel) == "object" || typeof(destModel) == "undefined" ) { if( destModel == null ) { destModel = model; } } else { if( destModel == "" ) { destModel = model; } } if( typeof(srcModel) == "object" || typeof(srcModel) == "undefined" ) { if( srcModel == null ) { srcModel = model; } } else { if( srcModel == "" ) { srcModel = model; } } //var destNodeList = destModel.instance1.selectNodes(strDest); var destNodeList = destModel.instances.item(0).selectNodes(strDest); if( destNodeList == null || destNodeList.length == 0 ) { return; } //var pDestNode = destNodeList(0).parentNode; var pDestNode = destNodeList.item(0).parentNode; var destLastNodesetName = destNodeList.item(0).nodeName; //var srcNodeList = srcModel.instance1.selectNodes(strSrc); var srcNodeList = srcModel.instances.item(0).selectNodes(strSrc); if( srcNodeList == null || srcNodeList.length == 0 ) return; if( mode != "before" ) { if( mode == "replace" || mode == null ) { destModel.removeNodeset(strDest); } var srcNode; var tmpSrcNode; while( srcNode = srcNodeList.nextNode() ) { tmpSrcNode = srcNode.cloneNode(true); tmpSrcNode.nodeName = destLastNodesetName; // pDestNode.appendChild(tmpSrcNode); model.duplicate(pDestNode, tmpSrcNode); } } else { /* var destFirstChildNode = destNodeList.firstChild; var srcNode; var tmpSrcNode; while( srcNode = srcNodeList.nextNode() ) { tmpSrcNode = srcNode.cloneNode(true); tmpSrcNode.nodeName = destLastNodesetName; pDestNode.insertBefore(tmpSrcNode, destFirstChildNode); } */ var tmpSrcNode; for( var i = srcNodeList.length - 1; i >= 0; i-- ) { pDestNode = destModel.instances.item(0).selectSingleNode(strDest).parentNode; tmpSrcNode = srcNodeList.item(i).cloneNode(true); tmpSrcNode.nodeName = destLastNodesetName; model.duplicate(pDestNode, tmpSrcNode, "*[1]"); } } } /** * @--------------------------------------------------- * @desc : 문자열 앞뒤에있는 공백 제거 * @param : N/A * @return : 공백을 제거한 결과 문자열 * @--------------------------------------------------- */ function getTrim() { var startPoint = 0; // subString 하기 위한 시작 포인트 var endPoint = this.length; // subString 하기 위한 끝 포인트 //문자열앞에 공백문자가 들어 있는 Index 추출 while( (startPoint < endPoint) && (this.charCodeAt(startPoint) == 32) ) { startPoint++; } //문자열뒤에 공백문자가 들어 있는 Index 추출 while( (startPoint < endPoint) && (this.charCodeAt(endPoint-1) == 32) ) { endPoint--; } // 공백을 제거했으면 subString하여 결과문자열을 리턴하고 제거한 내용이 없으면 그대로 리턴 return ( (startPoint > 0) || (endPoint < this.length) ) ? this.substring(startPoint, endPoint) : this; } /** * @desc : 사용자 답변 조회 * @ * @param : * @return : * @author : * @--------------------------------------------------- */ function fGetUserEnvOcsOrdAnsw(ref, rsltref, qestcd){ var mmb_rsltref = "/root/hidden/interface"; model.removeNode(mmb_rsltref); model.makeNode(mmb_rsltref); model.removeNode(ref); model.makeValue(ref + "/interqestcd", qestcd); if(submit("TRMMB01104", "false", ref, mmb_rsltref)==true){ model.makeNode(rsltref); model.copyNode(rsltref, mmb_rsltref); model.removeNode(mmb_rsltref); } } /** * @desc : 로그아웃 * @ * @param : * @return : * @author : * @--------------------------------------------------- */ function userLogout() { if ( confirm("로그아웃 하시겠습니까?") ) { top.document.location="/himed/webapps/com/hismainweb/jsp/logoutphone.live"; } }