emrbrowser.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. /**
  2. EMR_BROWSER의 JAVASCRIPT 파일
  3. **/
  4. //현재비율. 100%로 할시 이미지 깨짐문제로 101%로 세팅
  5. var nowZoom = 101;
  6. // 최대비율(500으로하면 5배 커진다)
  7. var maxZoom = 300;
  8. // 최소비율
  9. var minZoom = 80;
  10. var TFWin = null;
  11. var domain = "";
  12. var lockyn = "N";
  13. var emrview_maxWidth = 840;
  14. /**
  15. 상페이지를 최상단으로 옮기기
  16. **/
  17. function go_top(){location.href='#top';}
  18. /**
  19. 다음페이지 호출
  20. 클릭한 '다음페이지' 는 화면에서 지운다.
  21. **/
  22. function nPage(page) {
  23. var obj = document.getElementById('tr' + page);
  24. if(obj){
  25. obj.innerHTML = '';
  26. obj.style.display='none' ;
  27. }
  28. loadHTML(page);
  29. }
  30. /**
  31. 현재페이지에 있는 ckeckbox 모두 체크 / 또는 해제
  32. **/
  33. function selectAll(bool){
  34. var ckk = document.getElementsByName('ck');
  35. for(i=0; i<ckk.length; i++){
  36. if(bool == 'Y')
  37. ckk[i].checked = true;
  38. else
  39. ckk[i].checked = false;
  40. }
  41. }
  42. /**
  43. 페이지보기 팝업
  44. 체크된 체크박스에 갯수에 따라 정해진 위치에 팝업을 띄움
  45. 팝업 화면에서 .'checkbox'와 '다음페이지' 등을 안보이게 가림
  46. **/
  47. function pageView(){
  48. var checknum = 0;
  49. var sum = 0;
  50. var ckk = document.getElementsByName('ck');
  51. for(i=0; i<ckk.length; i++){
  52. if(ckk[i].checked){
  53. ckvalue = ckk[i].value;
  54. ckvalue_arr = ckvalue.split("||");
  55. checknum++;
  56. if(sum % 2 == 0)
  57. win = window.open('about:blank','', 'width=900, height=700, top=0, left=0, scrollbars=yes');
  58. else
  59. win = window.open('about:blank','', 'width=900, height=700, top=0, left=300, scrollbars=yes');
  60. win.document.open();
  61. win.document.write("<link rel='stylesheet' type='text/css' href='../../../com/commonweb/css/common.css' />");
  62. win.document.write("<link rel='stylesheet' type='text/css' href='../../../emr/commonweb/css/emr.css' />");
  63. win.document.write("<script type='text/javascript' src='../../../emr/emrbrowserweb/js/emrbrowser.js'></script>");
  64. win.document.write(document.getElementById('div' + ckvalue_arr[ckvalue_arr.length-1]).innerHTML);
  65. win.document.title = "EMR Browser " + ckvalue_arr[0];
  66. win.document.close();
  67. sum++;
  68. if(win.document.getElementById('nextpagelink'))
  69. win.document.getElementById('nextpagelink').style.display='none';
  70. if(win.document.getElementById('checkid'))
  71. win.document.getElementById('checkid').style.display='none';
  72. }
  73. }
  74. if(checknum == 0){ alert('체크해 주세요.');}
  75. }
  76. /**
  77. 화면확대
  78. **/
  79. function zoomIn() {
  80. if (nowZoom < maxZoom) {
  81. nowZoom += 10; //25%씩 커진다.
  82. } else {
  83. return;
  84. }
  85. document.getElementById('ALLPAGE').style.zoom = nowZoom + '%';
  86. }
  87. /**
  88. 화면축소
  89. **/
  90. function zoomOut() {
  91. if (nowZoom > minZoom) {
  92. nowZoom -= 10; //25%씩 작아진다.
  93. } else {
  94. return;
  95. }
  96. document.getElementById('ALLPAGE').style.zoom = nowZoom + '%';
  97. }
  98. /**
  99. 기본화면 비율은 101%로 한다. 이미지가 잘 나오게 하기 위함
  100. **/
  101. function zoomDeafault() {
  102. document.getElementById('ALLPAGE').style.zoom = nowZoom + '%';
  103. }
  104. /**
  105. 왼쪽 프레임의 링크부분 생성 및 name 링크를 달아서 바로가기식으로 추가
  106. **/
  107. function writeLink(view, link){
  108. var linkHM = '<a href=javascript:link(\"'+link+'\")>'+view+'</a>' ;
  109. //leftObj = top.left.document.getElementById('leftDiv');
  110. //k = top.left.document.createElement('div');
  111. leftObj = document.getElementById('linkinDiv');
  112. k = document.createElement('div');
  113. k.style.paddingTop = "5";
  114. k.style.paddingRight = "0";
  115. k.style.paddingBottom = "0";
  116. k.style.paddingLeft = "5";
  117. leftObj.appendChild(k);
  118. k.innerHTML =linkHM;
  119. //innerHTMLJS(k,leftHM);
  120. }
  121. /**
  122. ajax 안에서 javascript호출(writeLink) 하므로 기본적으로 동작하지 않음
  123. ajax 안에서 javascript를 호출했을시 작동하게 만드는 function임
  124. **/
  125. function innerHTMLJS(obj,content) {
  126. // if(typeof(obj) != 'object' && typeof(content) != 'string') return;
  127. obj = (typeof obj=='string') ? document.getElementById(obj) : obj;
  128. // avoid IE innerHTML bug add.
  129. content = '<body>' + content.replace(/<\/?head>/gi, '')
  130. .replace(/<\/?html>/gi, '')
  131. .replace(/<body/gi, '<div')
  132. .replace(/<\/body/gi, '</div') + '</body>';
  133. obj.innerHTML = content;
  134. var scripts = obj.getElementsByTagName('script');
  135. if(scripts == false) return true; // no node script == no problem !
  136. for(var i=0; i<scripts.length; i++) {
  137. var scriptclone = document.createElement('script');
  138. if(scripts[i].attributes.length > 0) { /* boucle de copie des attributs du script dans le nouveau node */
  139. for(var j in scripts[i].attributes) {
  140. if(typeof(scripts[i].attributes[j]) != 'undefined'
  141. && typeof(scripts[i].attributes[j].nodeName) != 'undefined' /* IE needs it */
  142. && scripts[i].attributes[j].nodeValue != null
  143. && scripts[i].attributes[j].nodeValue != '' /* IE needs it ou il copie des nodes vides */)
  144. {
  145. scriptclone.setAttribute(scripts[i].attributes[j].nodeName, scripts[i].attributes[j].nodeValue);
  146. }
  147. }
  148. }
  149. scriptclone.text = scripts[i].text; // on copie le corp du script
  150. /*
  151. la j'ai pas compris, si je ne return pas sous opera ici : le javascript s'execute 2 fois -
  152. mais la : le script s'execute mais n'est pas a ce moment la place entre les balises scripts !
  153. et si je return juste apres le innerHTML, le script n'est pas execute... ---o(<
  154. */
  155. //if (navigator.userAgent.indexOf('Opera')>0) { return; }
  156. /* on force le remplacement du node par dom, qui a pour effet de forcer le parsing du javascript */
  157. scripts[i].parentNode.replaceChild(scriptclone, scripts[i]);
  158. }
  159. return true;
  160. }
  161. /*
  162. copy/paste 기능 구현을 위해 보안모듈의 설치 여부를 체크
  163. */
  164. function SecuCheck(){
  165. try
  166. {
  167. var WebSecurer = document.all("WebSecurer");
  168. var DSstate = WebSecurer. DSInstalled;
  169. if( DSstate != 1)
  170. {
  171. alert("보안모듈이 설치 되지 않았습니다.");
  172. //window.location.replace("ErrorPage.html")
  173. }
  174. }
  175. catch(e)
  176. {
  177. alert("보안모듈이 설치 되지 않았습니다.");
  178. //window.location.replace("ErrorPage.html")
  179. }
  180. }
  181. /*
  182. name link로 이동
  183. */
  184. function link(w){
  185. var ll = location.toString();
  186. var lo = ll.split('#');
  187. //top.content.location.href = lo[0] + '#' + w;
  188. location.href = lo[0] + '#' + w;
  189. }
  190. /*
  191. bookmark insert를 위해 필요한 인자값을 세팅
  192. */
  193. function getBookmarkParameter(){
  194. var checknum = 0;
  195. var retValue = "";
  196. var ckk = document.getElementsByName('ck');
  197. for(i=0; i<ckk.length; i++){
  198. if(ckk[i].checked){
  199. checknum++;
  200. ckvalue = ckk[i].value;
  201. ckvalue_arr = ckvalue.split("||");
  202. if(retValue == ""){
  203. retValue = ckvalue_arr[0] + "▦" + ckvalue_arr[1] + "▦" + ckvalue_arr[2] + "▦" + ckvalue_arr[3] + "▦" + ckvalue_arr[4] + "▦" + ckvalue_arr[5] + "▦" + ckvalue_arr[6] + "▦" + ckvalue_arr[7] + "▦" + ckvalue_arr[8] + "▦" + ckvalue_arr[9] + "▦" + ckvalue_arr[10] + "▦" + ckvalue_arr[11] + "▦" + ckvalue_arr[12] + "▦" + ckvalue_arr[13] + "▦" + ckvalue_arr[14] + "▦" + ckvalue_arr[15] + "▦" + ckvalue_arr[16];
  204. }
  205. else{
  206. retValue = retValue + "▩" + ckvalue_arr[0] + "▦" + ckvalue_arr[1] + "▦" + ckvalue_arr[2] + "▦" + ckvalue_arr[3] + "▦" + ckvalue_arr[4] + "▦" + ckvalue_arr[5] + "▦" + ckvalue_arr[6] + "▦" + ckvalue_arr[7] + "▦" + ckvalue_arr[8] + "▦" + ckvalue_arr[9] + "▦" + ckvalue_arr[10] + "▦" + ckvalue_arr[11] + "▦" + ckvalue_arr[12] + "▦" + ckvalue_arr[13] + "▦" + ckvalue_arr[14] + "▦" + ckvalue_arr[15] + "▦" + ckvalue_arr[16];
  207. }
  208. }
  209. }
  210. if(checknum == 0){
  211. alert('체크해 주세요.');
  212. return retValue;
  213. }
  214. else{
  215. return retValue;
  216. }
  217. }
  218. var checknum = 1;
  219. function viewHidden(){
  220. var obj1 = document.getElementById("linkDiv");
  221. var obj2 = document.getElementById("inbtn");
  222. var obj3 = document.getElementById("linkinDiv");
  223. if(checknum == 1){
  224. obj1.style.width = "27";
  225. obj1.style.left = "820";
  226. obj2.innerHTML = "<a href='javascript:viewHidden()'><img src='../../../com/commonweb/images/btn_send_left.gif' border='0' width='26' height='19'/></a>";
  227. obj3.style.display = "none";
  228. checknum = 2;
  229. }
  230. else{
  231. obj1.style.width = "200";
  232. obj1.style.left = "656";
  233. obj2.innerHTML = "<a href='javascript:viewHidden()'><img src='../../../com/commonweb/images/btn_send_right.gif' border='0' width='26' height='19'/></a>";
  234. obj3.style.display = "";
  235. checknum = 1;
  236. }
  237. }
  238. function viewScroll(bool){
  239. var obj = document.getElementById("linkDiv");
  240. if(bool == "Y"){
  241. obj.style.display = "";
  242. }
  243. else{
  244. obj.style.display = "none";
  245. }
  246. }
  247. function goLocation(url){
  248. location.href = domain + "/himed/webapps/cmc/web/xrw/.live?" + url;
  249. }
  250. //-----------------------------------------------------------------------------------------------------------------------------
  251. var stmnLEFT = 0; // 왼쪽 여백 (메뉴가 왼쪽에서 10픽셀 떨어진 곳에 보여집니다)
  252. var stmnGAP1 = 0; // 위쪽 여백 (메뉴가 위에서 10픽셀 떨어진 곳에 보여집니다)
  253. var stmnGAP2 = 80; // 스크롤시 브라우저 위쪽과 떨어지는 거리
  254. var stmnBASE = 80; // 스크롤 시작위치
  255. var stmnActivateSpeed = 200;
  256. var stmnScrollSpeed = 10;
  257. var stmnTimer;
  258. function InitializeStaticMenu(){
  259. var STATICMENU = document.getElementById("linkDiv");
  260. STATICMENU.style.top = document.body.scrollTop + stmnBASE;
  261. RefreshStaticMenu();
  262. }
  263. function RefreshStaticMenu(){
  264. var STATICMENU = document.getElementById("linkDiv");
  265. var stmnStartPoint, stmnEndPoint, stmnRefreshTimer;
  266. stmnStartPoint = parseInt(STATICMENU.style.top, 10);
  267. stmnEndPoint = document.body.scrollTop + stmnGAP2;
  268. if (stmnEndPoint < stmnGAP1) stmnEndPoint = stmnGAP1;
  269. stmnRefreshTimer = stmnActivateSpeed;
  270. if ( stmnStartPoint != stmnEndPoint ) {
  271. stmnScrollAmount = Math.ceil( Math.abs( stmnEndPoint - stmnStartPoint ) / 15 );
  272. STATICMENU.style.top = parseInt(STATICMENU.style.top, 10) + ( ( stmnEndPoint<stmnStartPoint ) ? -stmnScrollAmount : stmnScrollAmount );
  273. stmnRefreshTimer = stmnScrollSpeed;
  274. }
  275. stmnTimer = setTimeout ("RefreshStaticMenu();", stmnRefreshTimer);
  276. }
  277. function emrview_errorImage(o, id){
  278. o.src = "../../../com/commonweb/images/no_image.gif";
  279. if (id != null) {
  280. var divObj = document.getElementById("div_reckey_i"+id);
  281. if (divObj != null) {
  282. divObj.innerHTML = divObj.innerHTML + "<BR>error code : "+id;
  283. }
  284. }
  285. }
  286. function emrview_resizeImage(img, maxWid)
  287. {
  288. if (maxWid == null)
  289. maxWid = emrview_maxWidth;
  290. if (img.width > maxWid) {
  291. img.height = img.height * maxWid / img.width;
  292. img.width = maxWid;
  293. }
  294. }
  295. //--------------------------------------------------------------------------------------------------------
  296. //프린트 관련
  297. function initPrint(){
  298. if (!secmgr.object){
  299. return;
  300. }
  301. else{
  302. //UpdateViewsourceLinks();
  303. /*
  304. document.expando = true;
  305. document.printingRules = {
  306. //diffFirstPageHeadFoot: true,
  307. allPagesHeadFoot: true,
  308. pageRange: "",
  309. printingPass: "all",
  310. //printingPass: "odd&even",
  311. mirrorMargins: true,
  312. setupButton: "show",
  313. //setupButton: "hidden",
  314. setupExtraButton: "enabled"
  315. }
  316. */
  317. //document.printingRules.extraFirstPageFooter = "<div style='color:red; font:bold 6pt Arial'><img src='http://www.meadroid.com/support/sx_stat.gif'>&nbsp;&nbsp;EXTRA FIRST PAGE FOOTER AS IMAGE<br>&nbsp;</div>";
  318. //document.printingRules.firstPageHeader = "<div style='border: 1pt solid red; font: bold 12pt Arial; background: threedface; color: white; padding-Top: 5px; padding-Bottom: 6px; background-repeat: repeat; background-Image: url(http://www.meadroid.com/images/act_bg.jpg)'><center> --- Header for page <b> &p </b>--- </center></div>";
  319. //document.printingRules.firstPageFooter = "<div style='border: 1pt solid red; font: bold 12pt Arial; background: threedface; color: white; padding-Top: 5px; padding-Bottom: 6px background-repeat: repeat; background-Image: url(http://www.meadroid.com/images/act_bg.jpg)'><center> --- Footer for page <b> &p </b>--- </center></div>";
  320. //document.printingRules.allPagesHeader = "<div style='border: 1pt solid red; font: bold 12pt Arial; background: threedface; color: navy; padding-Top: 5px; padding-Bottom: 6px; background-repeat: repeat; background-Image: url(http://www.meadroid.com/images/non_act_bg.jpg)'><center> --- Header for page <b> &p </b>---</i></center></div>";
  321. //document.printingRules.allPagesFooter = "<div style='border: 1pt solid red; font: bold 12pt Arial; background: threedface; color: navy; padding-Top: 5px; padding-Bottom: 6px; background-repeat: repeat; background-Image: url(http://www.meadroid.com/images/non_act_bg.jpg)'><center> --- Footer for page <b> &p </b> ---</i></center></div>";
  322. /*
  323. // Usually the value of height for headers/footers
  324. // is automatically calculated.
  325. // But we may decide to specify an exact value as below:
  326. document.firstHeaderHeight = 180;
  327. document.firstFooterHeight = 180;
  328. document.extraFirstFooterHeight = 160;
  329. document.allHeaderHeight = 120;
  330. document.allFooterHeight = 120;
  331. */
  332. //factory.printing.SetPrintScale(120);
  333. // factory.printing.paperSize = "Letter (8.5 x 11in.)";
  334. factory.printing.header = "";
  335. factory.printing.footer = "";
  336. //factory.printing.onuserprintpreview = Preview;
  337. //factory.printing.printBackground = true;
  338. }
  339. }
  340. function Preview(instcd, instnm, tmppid, hngnm, rrgstno, pTime, usernm, plcenm){
  341. //factory.printing.header = instnm + " " + tmppid + " " + hngnm + " " + rrgstno;
  342. //factory.printing.footer = "&p/&P 출력 : " + pTime + " " + usernm + " " + plcenm + " 이 서식은 사본입니다.(원본 대조필)";
  343. //factory.printing.Preview();
  344. document.title = instnm + " " + tmppid + " " + hngnm;
  345. // 웹 브라우저 컨트롤 생성
  346. var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
  347. // 웹 페이지에 객체 삽입
  348. document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
  349. // if intOLEparam이 정의되어 있지 않으면 디폴트 값 설정
  350. //if ( ( ! intOLEparam ) || ( intOLEparam < -1 ) || (intOLEparam > 1 ) )
  351. intOLEparam = 1;
  352. // ExexWB 메쏘드 실행
  353. WebBrowser1.ExecWB(7, intOLEparam);
  354. // 객체 해제
  355. WebBrowser1.outerHTML = "";
  356. //window.print();
  357. }
  358. function DoPrint(){
  359. factory.printing.Print();
  360. }
  361. //------------------------------------------------------------
  362. function copyBrowser(){
  363. var rng = document.selection.createRange();
  364. var str = new String(rng.text);
  365. return str;
  366. }