123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635 |
- /*
- - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
- 달력 ( SPMMO10600_달력.xrw - JScript )
- - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
- */
- var sOPENER_COND = ""; // opener의 parameter string(sgnl:단일, multi:멀티)
- var sDEFAULT_DAY = ""; // 기본일자(기본일 이전의 날짜는 선택불가함)
- var sRTN_PARAM = ""; // return될 날짜 string
- var sREQ_PARAM = ""; // request된 날짜 string
- var sLIMIT_DAY = ""; // 제한일자 string
- /**
- * @desc : 화면 초기화
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fInitialize(){
- model.removeNodeset("/root/main/choidd/choidd");
- if(checkOpener()){
- sOPENER_COND = opener.javascript.getParameter("paramcalflag");
- sDEFAULT_DAY = opener.javascript.getParameter("defaultday");
- sLIMIT_DAY = opener.javascript.getParameter("limitday");
- sREQ_PARAM = opener.javascript.getParameter("reqparam");
- sPRCPDAYNO = opener.javascript.getParameter("prcpdayno");
- sLIMIT_FROM_DAY = opener.javascript.getParameter("limitfromday");
- opener.javascript.clearParameter("paramcalflag");
- opener.javascript.clearParameter("defaultday");
- opener.javascript.clearParameter("limitday");
- opener.javascript.clearParameter("reqparam");
- opener.javascript.clearParameter("prcpdayno");
- opener.javascript.clearParameter("limitfromday");
-
- }else{
- messageBox("메인 화면을 찾는데", "E009");
- window.close();
- }
-
- if(sDEFAULT_DAY != ""){ //기본일자가 넘겨온 경우, 최초일자를 설정한다.
- model.setValue("/root/init/today", fGetInitDay());
- }else{
- model.setValue("/root/init/today", getCurrentDate()); //기본일자가 안 넘겨져 온 경우, 최초 일자를 오늘로 설정
- sDEFAULT_DAY = "10000000"; //이전일자를 선택하지 않게 한다.
- }
-
- if(sLIMIT_DAY == ""){ //제한일자가 안 넘어온 경우, 최대일자를 설정한다.
- sLIMIT_DAY = "99991231";
- }
-
- if(sLIMIT_FROM_DAY == ""){
- sLIMIT_FROM_DAY = "19990101";
- }
-
- var dd = model.getValue("/root/init/today");
- var sYear = dd.substr(0, 4);
- var sMonth = dd.substr(4, 2);
- model.setValue("/root/main/cond/year", sYear);
- model.setValue("/root/main/cond/month", sMonth);
- model.refresh();
-
- fReqCalendar();
-
- //처방일수를 파라미터로 넘기고, 기본일자가 하루로 들어간 경우에는 휴일포함으로 달력에 표시
- if(sPRCPDAYNO != "" && sDEFAULT_DAY.length < 10){
- model.setValue("/root/main/day/daycnt", sPRCPDAYNO);
- btn_app.dispatch("DOMActivate");
- model.refresh();
-
- //기본일자만 넘어온 경우에는 기본일자를 기준으로 달력에 표시
- }else{
- sRTN_PARAM = sREQ_PARAM;
- fSetSelectedDay();
- }
-
- /*
- if(sDEFAULT_DAY != ""){
- sRTN_PARAM = sREQ_PARAM;
- fSetSelectedDay();
- }*/
- }
- /**
- * @desc : 달력조회
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fReqCalendar(){
- fInitCalendar(); //caption화면을 초기화 한다.
- var sYear = model.getValue("/root/main/cond/year");
- var sMonth = model.getValue("/root/main/cond/month");
- model.makeValue("/root/send/reqdata/basedd", sYear.concat(sMonth));
- if(submit("TRMMO10601")){
- fSetCalendar();
- }
- model.refresh();
- }
- /**
- * @desc : 달력초기화
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fInitCalendar(procflag){
- for(var iRow = 1; iRow < 7; iRow++){
- for(var iCol = 1; iCol < 8; iCol++){
- var capObj = document.controls("caption"+ iRow + "" + iCol);
- capObj.attribute("text")="";
- capObj.attribute("background-color") = "transparent";
- }
- }
- model.refresh();
- }
- /**
- * @desc : 달력날짜 및 휴일 색깔 설정
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fSetCalendar(){
-
- fInitCalendar();
-
- var iTotRow = getNodeSetCnt("/root/main/calendar/calendar");
- var sDay = "";
-
- for(var iRow = 1; iRow <= iTotRow ; iRow++){
- var sBasedd = model.getValue("/root/main/calendar/calendar[" + iRow + "]/basedd");
- if(sBasedd.substr(6,1) >0){
- sDay = sBasedd.substr(6,2);
-
- }else{
- sDay = sBasedd.substr(7,1);
-
- }
- var row = model.getValue("/root/main/calendar/calendar[" + iRow + "]/weekday"); //row(주차)
- var col = model.getValue("/root/main/calendar/calendar[" + iRow + "]/days"); //col(요일)
- var dutflag = model.getValue("/root/main/calendar/calendar[" + iRow + "]/dutflag"); //휴일구분
-
- var capObj = document.controls("caption" + row + col);
- capObj.attribute("text") = sDay;
- if(dutflag == 4){ //토요일인 경우, 파란색 설정
- capObj.attribute("color") = "#0000ff";
-
- }else if(dutflag == 8){//일요일인 경우, 빨간색 설정
- capObj.attribute("color") = "#ff0000";
-
- }else{ //그 이외는 검정색
- capObj.attribute("color") = "#000000";
-
- }
- }
- }
- /**
- * @desc : 이전 달버튼 클릭시 - 월 변경 및 달력 조회처리
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fClkBfMonth(){
- var sMonth = model.getValue("/root/main/cond/month");
- var sYear = model.getValue("/root/main/cond/year");
- var iBfmonth;
-
- if(sMonth.substr(0,1) == "0"){ //10월 이전인 경우, 앞자리 0을 제거
- iBfmonth = sMonth.substr(1,1);
-
- }else{ //10월 이후인 경우
- iBfmonth = eval(sMonth);
-
- }
- iBfmonth--;
- if(iBfmonth < 1){ // 1월 이전을 선택한 경우, 년도를 바꿈
- sMonth = 12;
- sYear--;
-
- }else if(iBfmonth < 10){ // 10월 이전을 선택한 경우, 월 앞에 0을 붙인다.
- sMonth = "0".concat(iBfmonth);
-
- }else{
- sMonth = iBfmonth;
-
- }
-
- model.setValue("/root/main/cond/year", sYear);
- model.setValue("/root/main/cond/month", sMonth);
- model.refresh();
- fReqCalendar();
- fSetSelectedDay();
- }
- /**
- * @desc : 다음 달버튼 클릭시 - 월 변경 및 달력 조회처리
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fClkAfMonth(){
- var mmonth = model.getValue("/root/main/cond/month");
- var yyear = model.getValue("/root/main/cond/year");
- var bfmonth;
-
- if(mmonth.substr(0,1) == "0"){ //10월 이전인 경우, 앞자리 0을 제거
- bfmonth = mmonth.substr(1,1);
- bfmonth++;
- }else{ //10월 이후인 경우
- bfmonth = mmonth;
- bfmonth++;
- }
- if(bfmonth > 12){ // 1월 이전을 선택한 경우, 년도를 바꿈
- bfmonth = "01";
- yyear++;
- }else if(bfmonth < 10){ //10월 이후인 경우에는 앞자리에 0을 붙임.
- bfmonth = "0".concat(bfmonth);
- }
- model.setValue("/root/main/cond/year", yyear);
- model.setValue("/root/main/cond/month", bfmonth);
- model.refresh();
-
- fReqCalendar();
-
- fSetSelectedDay();
- }
- /**
- * @desc : 이전 년버튼 클릭시 - 월 변경 및 달력 조회처리
- * @
- * @param :
- * @return :
- * @author : 오지훈 2007. 4. 25
- * @---------------------------------------------------
- */
- function fClkBfYear(){
- var sYear = model.getValue("/root/main/cond/year");
- sYear--;
- model.setValue("/root/main/cond/year", sYear);
- model.refresh();
-
- fReqCalendar();
-
- fSetSelectedDay();
- }
- /**
- * @desc : 다음 년버튼 클릭시 - 월 변경 및 달력 조회처리
- * @
- * @param :
- * @return :
- * @author : 오지훈 2007. 4. 25
- * @---------------------------------------------------
- */
- function fClkAfYear(){
- var yyear = model.getValue("/root/main/cond/year");
- yyear++;
- model.setValue("/root/main/cond/year", yyear);
- model.refresh();
-
- fReqCalendar();
-
- fSetSelectedDay();
- }
- /**
- * @desc : 달력 클릭시 해당 년월일 추출 및 제거(멀티용)
- * @
- * @param :
- * @return :
- * @author : 오지훈 2007. 4. 25
- * @---------------------------------------------------
- */
- function fClkMultiCalendar(){
- var sTmp = "";
- var sYear = model.getValue("/root/main/cond/year");
- var sMonth = model.getValue("/root/main/cond/month");
- var objCap = document.controls(event.target);
- var sDay = objCap.attribute("text");
- var sColor = objCap.attribute("background-color");
-
- if(sDay == ""){
- return;
-
- }
-
- if(sColor == "transparent"){
- objCap.attribute("background-color") = "#ece1ec";
- if(sDay.length == 1){
- sDay = "0".concat(sDay);
-
- }
- sDate = sYear + sMonth + sDay + "▩";
- sRTN_PARAM += sDate;
-
- }else{
- objCap.attribute("background-color") = "transparent";
- if(sDay.length == 1){
- sDay = "0".concat(sDay);
-
- }
- sDate = sYear + sMonth + sDay + "▩";
- sRTN_PARAM = sRTN_PARAM.setReplaceWord(sDate, "");
-
- }
- //alert(sRTN_PARAM);
- fAddGrdChoiDD(sRTN_PARAM);
- }
- /**
- * @desc : 기존에 셋팅한 날짜를 보여준다.
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fSetSelectedDay(){
- var sYear = "";
- var sMonth = "";
- var sDay = "";
- var objCap;
- var sCurYear = model.getValue("/root/main/cond/year");
- var sCurMonth = model.getValue("/root/main/cond/month");
- var sDays = sRTN_PARAM.split("▩");
- // 끝자리에 구분자""가 들어가 있는지 확인하구 split한다.
- // 날짜가 없는 배열 생성을 막기 위해
- if(sDays.length > 0){
- //alert(sRTN_PARAM.substr(sRTN_PARAM.length-1, 1));
- if(sRTN_PARAM.substr(sRTN_PARAM.length-1, 1) == "▩"){
- sRTN_PARAM = sRTN_PARAM.substr(0, sRTN_PARAM.length - 1);
- }
- }
-
- for(var i = 0; i < sDays.length ; i++){
- sYear = sDays[i].substr(0,4);
- sMonth = sDays[i].substr(4,2);
- sDay = sDays[i].substr(6,2);
-
- if(sDay.substr(0,1) == "0"){
- sDay = (sDay.substr(1,1)).getTrim();
- }
-
- if(sCurYear == sYear && sCurMonth == sMonth){
- for(var iRow = 1; iRow < 7; iRow++){
- for(var iCol = 1; iCol < 8; iCol++){
- objCap = document.controls("caption" + iRow + "" + iCol);
- //alert(objCap.attribute("text"));
- if(objCap.attribute("text") == sDay){
- objCap.attribute("background-color") = "#ece1ec";
- break;
- }
- }
- }
- }
- }
-
- if(sRTN_PARAM != ""){
- sRTN_PARAM = sRTN_PARAM + "▩";
- //alert(sRTN_PARAM);
- fAddGrdChoiDD(sRTN_PARAM);
- }
- }
- /**
- * @desc : 달력 클릭시 해당 년월일 추출 및 제거(싱글용)
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fClkSnglCalendar(){
- var sTmp = "";
- var sYear = model.getValue("/root/main/cond/year");
- var sMonth = model.getValue("/root/main/cond/month");
- var sDay = "";
- var objCap;
-
- objSelectCap = document.controls(event.target);
- sDay = objSelectCap.attribute("text");
- if(sDay == ""){
- return;
-
- }
-
- for(var iRow = 1; iRow < 7; iRow++){
- for(var iCol = 1; iCol < 8; iCol++){
- objCap = document.controls("caption" + iRow + iCol);
- objCap.attribute("background-color") = "#ffffff";
-
- }
- }
- objSelectCap.attribute("background-color") = "#ece1ec";
-
- if(sDay.length == 1){
- sDay = "0".concat(sDay);
- }
-
- sDate = sYear + sMonth + sDay + "▩";
- sRTN_PARAM = sDate;
- fAddGrdChoiDD(sRTN_PARAM);
- }
- /**
- * @desc : 이전날짜가 설정된 경우, 무결성 검사를 한다.
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fChkInvaild(){
- var sDate = "";
- var sYear = model.getValue("/root/main/cond/year");
- var sMonth = model.getValue("/root/main/cond/month");
- objSelectCap = document.controls(event.target);
- sDay = objSelectCap.attribute("text");
- if(sDay.length == 1){
- sDay = "0".concat(sDay);
- }
-
- sDate = sYear + sMonth + sDay;
- if(sDate < sDEFAULT_DAY){
- return false;
-
- }else if(sDate > sLIMIT_DAY){
- return false;
-
- }else if(sDate < sLIMIT_FROM_DAY){
- return false;
-
- }else{
- return true;
-
- }
- }
- /**
- * @desc : 확인버튼 클릭시, rtnParam을 opener에 설정함.
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fClkCnfm(){
- sRTN_PARAM = sRTN_PARAM.substr(0, sRTN_PARAM.length-1);
-
- if(checkOpener()){
- opener.javascript.setParameter("rtn" , sRTN_PARAM);
- }else{
- messageBox("메인 화면을 찾는데", "E009");
- }
- window.close();
- }
- /**
- * @desc : Request된 날짜 중에 최종일자를 default로 화면에 뿌려준다.
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fGetInitDay(){
- var sDays = sREQ_PARAM.split("▩");
- return sDays[0];
- }
- /**
- * @desc : 취소버튼 클릭시, rtnParam clean
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fClkCncl(){
- if(checkOpener()){
- opener.javascript.setParameter("rtn" , "");
- }else{
- messageBox("메인 화면을 찾는데", "E009");
- }
- window.close();
- }
- /**
- * @desc : 그리드에 선택일 출력
- * @
- * @param : sRTN_PARAM - 출력될 날짜 string
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fAddGrdChoiDD(param){
- model.removeNodeset("/root/main/choidd/choidd");
- model.refresh();
-
- if(param == "▩"){ //일자값이 없는 경우 return;
- return;
- }
-
- var sDD = param.split("▩");
- for(var i = 0; i < sDD.length-1; i++){
- if(sDD[i] != ""){
- grd_choilist.addRow(false);
- model.setValue("/root/main/choidd/choidd[" + grd_choilist.row + "]/dd", sDD[i]);
- }
- }
- grd_choilist.sort(1, 0, grd_choilist.rows - 1, 0) = "asc";
- grd_choilist.refresh();
- }
- /**
- * @desc : 간격, 일자로 데이터를 생성한다.
- * @
- * @param :
- * @return :
- * @author : 오지훈
- * @---------------------------------------------------
- */
- function fCalcIntervalDay(){
- model.removeNodeset("/root/main/choidd/choidd");
- model.refresh();
-
- var holiflag = model.getValue("/root/main/day/holiflag"); //휴일구분
- var rtnday = "";
- var startdd = model.getValue("/root/init/today");
- var daycnt = model.getValue("/root/main/day/daycnt");
- var interval= model.getValue("/root/main/day/interval");
- var inc = 0;
- inc = eval(interval);
-
- if(holiflag == "Y"){ //휴일포함 한 경우
- rtnday = startdd + "▩";
-
- for(var i = 1; i < daycnt; i++){
- var dd = (startdd.toDate()).getAddDate(inc).getDateFormat();
- rtnday += dd + "▩";
- inc += eval(interval);
- }
-
- }else if(holiflag == "N"){ //휴일포함 하지 않는 경우
- rtnday = startdd + "▩";
- var bfmonth = (startdd.toDate()).getMonth();
- var dd = startdd;
-
- for(var i = 1; i < daycnt; i++){
- dd = (dd.toDate()).getAddDate(inc).getDateFormat();
- curmonth = (dd.toDate()).getMonth();
- if(curmonth != bfmonth){ //달이 변경된 경우
- btn_afmonth.dispatch("DOMActivate"); //달이 증가되어 해가 변경되는 경우도 처리한다.
- bfmonth = curmonth;
- }
- var holidd = model.getValue("/root/main/calendar/calendar[dutflag='8' and basedd='" + dd + "']/basedd");
- //var holidd = model.getValue("/root/main/calendar/calendar[basedd='" + dd + "']/basedd");
- if(holidd.length > 0){
- //함수로 처리하면, 다음 휴일이 아닌 일자를 찾는 중 달이나 해가 변경된 경우에는 문제발생
- //휴일인 경우, 휴일이 아닌 다음일자를 찾는다.
- while(true){
- dd = (dd.toDate()).getAddDate(1).getDateFormat();
- curmonth = (dd.toDate()).getMonth();
- if(curmonth != bfmonth){
- btn_afmonth.dispatch("DOMActivate"); //달이 증가되어 해가 변경되는 경우도 처리한다.
- bfmonth = curmonth
- }
- var selctdd = model.getValue("/root/main/calendar/calendar[dutflag!='8' and basedd='" + dd + "']/basedd");
- if(selctdd.length != 0){
- break;
- }
- }
- dd = selctdd;
- //dd = fFndNextDay(curmonth, dd); //휴일인 다음일자를 찾는다.
- }
- rtnday += dd + "▩";
- }
- }
-
- fAddGrdChoiDD(rtnday);
-
- sRTN_PARAM = rtnday;
-
- fSetSelectedDay();
- }
- /**
- * 해당일자가 휴일인 경우, 휴일이 아닌 다음일자를 찾아 return함.
- *
- * param : curmonth 현재월
- * : curdd 현재일
- * return: selctdd 선택일
- */
- function fFndNextDay(curmonth, curdd){
- while(true){
- curdd = (curdd.toDate()).getAddDate(1).getDateFormat();
- month = (curdd.toDate()).getMonth();
- //alert(curmonth + "," + month + "," + curdd);
- if(curmonth != month){
- btn_afmonth.dispatch("DOMActivate"); //달이 증가되어 해가 변경되는 경우도 처리한다.
- curmonth = month;
- }
- var selctdd = model.getValue("/root/main/calendar/calendar[dutflag!='8' and basedd='" + curdd + "']/basedd");
- if(selctdd.length != 0){
- break;
- }
- }
- //alert(selctdd);
- return selctdd;
- }
|