var CONTEXT_URL="/workflow"; var CALENDAR_URL= CONTEXT_URL + "/util/calendar.html"; var TEXT_CONFIRM_URL = CONTEXT_URL + "/util/confirm.jsp"; var PASS_CONFIRM_URL = CONTEXT_URL + "/util/password.jsp"; var TEXT_MESSAGE_URL = CONTEXT_URL + "/util/message.jsp"; var CALENDAR_JSP_URL= CONTEXT_URL + "/util/calendar.jsp"; var cover = document.createElement("div"); cover.onclick = function(){ closeCalendar(null) }; var currentCalenderElm = null; var currentIframeElm = null; var currentPasswordElm = null; var passwordCommand = null; var copyFunction = null; var paramArray = null; function callCopyFunction(copyFunction, paramArray){ var paramArrayLength = paramArray.length; if(paramArrayLength == 2){ copyFunction(paramArray[0],paramArray[1]); }else if(paramArrayLength == 4){ copyFunction(paramArray[0],paramArray[1]); copyFunction(paramArray[0],paramArray[2]); copyFunction(paramArray[0],paramArray[3]); } } function setEnable(element_ ){ if(element_ == undefined){ return; } element_.disabled = false; Element.removeClassName(element_, "disabled"); } function setDisabled( element_ ){ if(element_ == undefined){ return; } element_.disabled = true; Element.addClassName(element_, "disabled"); } function setElement(element_) { var type = element_.type; if(type == undefined){ type = element_[0].type; } switch( type ){ case "text": case "textarea": case "password": case "file": element_.select(); break; case "radio": element_[0].focus(); break; default: element_.focus(); break; } } function setText(element_, text_) { var type = element_.type; if(type == undefined){ type = ""; } switch( type ){ case "text": case "textarea": case "password": element_.value=text_; break; default: element_.innerText=text_; break; } } function getText( element_ ) { var type = element_.type; if(type == undefined){ type = ""; } switch( type ){ case "text": case "textarea": case "password": return element_.value; break; default: return element_.innerText; break; } } function inCurrencyInput(element_) { if(element_.value != "" && !element_.readOnly){ element_.value=curToNum(element_.value); } setElement(element_); } function outCurrencyInput(element_) { if(element_.value != "") element_.value=toCur(element_.value); } function inDateInput(element_) { if(isDateFormat(getText(element_))){ setElement(element_); } } function outDateInput(element_) { } function copyDateInput(element_, copyElement_) { if(element_ != undefined && copyElement_ != undefined){ copyElement_.value = element_.value; } } function openCalendar(element_) { var params=""; params += "dialogWidth:275px;"; params += "dialogHeight:255px;"; params += "dialogTop:" + event.screenY + ";"; params += "dialogLeft:" + event.screenX + ";"; params += "center:no;"; params += "help:no;"; params += "resizable:no;"; params += "status:no;"; params += "scroll:no;"; var ret = showModalDialog(CALENDAR_URL, element_.value ,params); element_.value = ret; setElement(element_); } function screenOpenFull(action_, name_) { return screenOpen(action_, name_, window.screen.availWidth, window.screen.availHeight); } function screenOpen(action_, name_, winWidth_, winHeight_) { param = "toolbar=0,"; param += "location=0,"; param += "status=yes,"; param += "scrollbars=no,"; param += "resizable=yes,"; param += "top=0,"; param += "left=0,"; param += "scrolling=no,"; param += "dependent=yes,"; param += "width=" + winWidth_ + "px,"; param += "height=" + winHeight_+"px"; return open(action_, name_, param); } function scrollScreenOpen(action_, name_, winWidth_, winHeight_) { param = "toolbar=0,"; param += "location=0,"; param += "status=yes,"; param += "scrollbars=yes,"; param += "resizable=yes,"; param += "top=0,"; param += "left=0,"; param += "scrolling=no,"; param += "dependent=yes,"; param += "width=" + winWidth_ + "px,"; param += "height=" + winHeight_+"px"; return open(action_, name_, param); } function scrollScreenOpenFull(action_, name_){ return scrollScreenOpen(action_, name_, window.screen.availWidth, window.screen.availHeight-60); } function textConfirm( text_ ) { return confirm( text_ ); } function passConfirm( text_ ) { var params=""; params += "dialogWidth:400px;"; params += "dialogHeight:180px;"; params += "center:yes;"; params += "help:no;"; params += "resizable:no;"; params += "status:no;"; params += "scroll:no;"; return showModalDialog(PASS_CONFIRM_URL, text_ ,params); } /** ** パスワードのshowModalDialog対応(iframe用) ** ※openDialogForCalendar関数を参照しました **/ function passConfirmIframe( element_, text_, command) { var rect = element_.getBoundingClientRect(); var winLeft = (rect.left + getScrollOffsets().x - 10); var winTop = (rect.top + getScrollOffsets().y + 25); if(navigator.userAgent.indexOf('Android') > 0){ // Androidの場合拡大縮小に応じてgetScrollOffsetsの値が上下するため考慮しない winLeft = (rect.left - 10); winTop = (rect.top + 25); } var width = 400; var height = 180; // 表示位置調整(右端にコントロールがある場合対応) if(( winLeft + width + 50 ) > window.document.documentElement.scrollWidth){ winLeft = window.document.documentElement.scrollWidth - width - 50; } // 表示位置調整(下端にコントロールがある場合対応) if(( winTop + height ) > window.document.documentElement.scrollHeight){ winTop = (window.document.documentElement.scrollHeight - height + 25); } // Iframeでパスワードを表示 var iframeNode = document.createElement("iframe"); iframeNode.id = "passwordIframe"; iframeNode.className = "passwordIframe"; iframeNode.src = PASS_CONFIRM_URL + "?message=" + text_; iframeNode.width = width; iframeNode.height = height; iframeNode.overflowX = "hidden"; iframeNode.overflowY = "hidden"; iframeNode.style.border = "none"; iframeNode.style.boxShadow = "0px 0px 15px gray"; iframeNode.style.background = "transparent"; // 旧IE用の設定 iframeNode.frameBorder = 0; iframeNode.scrolling = "no"; // 表示位置設定 iframeNode.style.marginLeft = winLeft + "px"; iframeNode.style.marginTop = winTop + "px"; // カレンダーを表示中のコントロールを保持 currentPasswordElm = element_; currentIframeElm = iframeNode; passwordCommand = null; passwordCommand = command; // 表示 var body = document.getElementsByTagName("BODY")[0]; body.appendChild(cover); cover.appendChild(iframeNode); cover.className = "calendarCover" iframeNode.onload = function(){ // 幅の再設定 var iframeNode = document.getElementById("passwordIframe"); if (iframeNode.contentDocument) { // DOM ifeameDoc = iframeNode.contentDocument; iframeNode.width = ifeameDoc.body.scrollWidth; iframeNode.height = ifeameDoc.body.scrollHeight; } else if (iframeNode.contentWindow) { // IE win ifeameDoc = iframeNode.contentWindow.document; iframeNode.width = ifeameDoc.body.scrollWidth; iframeNode.height = ifeameDoc.body.scrollHeight; } } } /** パスワードのshowModalDialogのOKボタン押下後処理**/ function closePassword( selectedValue ) { var body = document.getElementsByTagName("BODY")[0]; if(typeof body !== "undefined"){ body.removeChild(cover); cover.removeChild(currentIframeElm); } currentPasswordElm = null; currentIframeElm = null; window.parent.setPassword(selectedValue, passwordCommand); } function textMessage( text_ ) { var params=""; params += "dialogWidth:400px;"; params += "dialogHeight:150px;"; params += "center:yes;"; params += "help:no;"; params += "resizable:no;"; params += "status:no;"; params += "scroll:no;"; showModalDialog(TEXT_MESSAGE_URL, text_ ,params); } function openDialogForCalendar( element_ , func , params ) { copyFunction = func; paramArray = params; var rect = element_.getBoundingClientRect(); var winLeft = (rect.left + getScrollOffsets().x - 10); var winTop = (rect.top + getScrollOffsets().y + 25); if(navigator.userAgent.indexOf('Android') > 0){ // Androidの場合拡大縮小に応じてgetScrollOffsetsの値が上下するため考慮しない winLeft = (rect.left - 10); winTop = (rect.top + 25); } var width = 288; var height = 340; // 表示位置調整(右端にコントロールがある場合対応) if(( winLeft + width + 50 ) > window.document.documentElement.scrollWidth){ winLeft = window.document.documentElement.scrollWidth - width - 50; } // 表示位置調整(下端にコントロールがある場合対応) if(( winTop + height ) > window.document.documentElement.scrollHeight){ winTop = (window.document.documentElement.scrollHeight - height + 25); } var currentDate = getText(element_); var date; if(isDateFormat(currentDate)){ date = new Date(currentDate); } else{ date = new Date(); } var firstyear = 1995; var lastyear = 2101; // Iframeでカレンダーを表示 var iframeNode = document.createElement("iframe"); iframeNode.id = "calendarIframe"; iframeNode.className = "calendarIframe"; iframeNode.src = CALENDAR_JSP_URL + "?date=" + date.getTime() + "&firstyear=" + firstyear + "&lastyear=" + lastyear; iframeNode.width = width; iframeNode.height = height; iframeNode.overflowX = "hidden"; iframeNode.overflowY = "hidden"; iframeNode.style.border = "none"; iframeNode.style.background = "transparent"; // 旧IE用の設定 iframeNode.frameBorder = 0; iframeNode.scrolling = "no"; // 表示位置設定 iframeNode.style.marginLeft = winLeft + "px"; iframeNode.style.marginTop = winTop + "px"; // カレンダーを表示中のコントロールを保持 currentCalenderElm = element_; currentIframeElm = iframeNode; // 表示 var body = document.getElementsByTagName("BODY")[0]; body.appendChild(cover); cover.appendChild(iframeNode); cover.className = "calendarCover" iframeNode.onload = function(){ // 幅の再設定 var iframeNode = document.getElementById("calendarIframe"); if (iframeNode.contentDocument) { // DOM ifeameDoc = iframeNode.contentDocument; iframeNode.width = ifeameDoc.body.scrollWidth; iframeNode.height = ifeameDoc.body.scrollHeight; } else if (iframeNode.contentWindow) { // IE win ifeameDoc = iframeNode.contentWindow.document; iframeNode.width = ifeameDoc.body.scrollWidth; iframeNode.height = ifeameDoc.body.scrollHeight; } } } // スクロール位置取得関数 function getScrollOffsets() { // This works for all browsers except IE versions 8 and before if ( window.pageXOffset != null ){ return { x: window.pageXOffset, y: window.pageYOffset }; } // For browsers in Standards mode var doc = window.document; if ( document.compatMode === "CSS1Compat" ) { return { x: doc.documentElement.scrollLeft, y: doc.documentElement.scrollTop }; } // For browsers in Quirks mode return { x: doc.body.scrollLeft, y: doc.body.scrollTop }; } function closeCalendar( selectedValue ) { var body = document.getElementsByTagName("BODY")[0]; if(typeof body !== "undefined"){ body.removeChild(cover); cover.removeChild(currentIframeElm); if( selectedValue == null){ }else{ var buf = "" buf += selectedValue.substr(0, 4); buf += "/"; buf += selectedValue.substr(4, 2); buf += "/"; buf += selectedValue.substr(6, 4); setText(currentCalenderElm, buf); if(typeof copyFunction !== "undefined"){ callCopyFunction(copyFunction, paramArray); } } } currentCalenderElm = null; currentIframeElm = null; } // 2022/07/21 Edge対応 パスコピー機能 function copyPath( targetId ) { var textarea = document.getElementById(targetId); if(textarea.value.indexOf("\\\\\\\\") >= 0){ textarea.value = textarea.value.replace(/\\\\/g, '\\'); } textarea.select(); document.execCommand('copy'); }