/*
* 7_1 Ajax対象を取得する
*/
function newXMLHttpRequest() {
var xmlreq = null;
if (window.XMLHttpRequest) {
// 非Microsoft browsersの場合
xmlreq = new XMLHttpRequest();
} else if (window.ActiveXObject) {
// Microsoft browsersの場合
try {
xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
try {
xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlreq = null;
}
}
}
if (xmlreq == null) {
if (!orteusSubmitStatus) {
alert("XMLHTTPRequest対象作成に失敗しました!");
}
}
return xmlreq;
}
/*
* 7_2 処理内容をサーバに送信する
*/
function sendRequest (method, url, data, async, callback, thisObj, srcObjs, destObjs, runJsStatus) {
gAjaxExecStatus = true;
var xmlreq = newXMLHttpRequest();
xmlreq.open(method, url, async);
xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlreq.setRequestHeader("If-Modified-Since","0");
xmlreq.onreadystatechange = function() {
// サーバが処理完了 且つ 正常処理の場合でcallback処理を行う
if (xmlreq.readyState == 4) {
if (xmlreq.status == 200) {
// XML文字列版
var ajaxXml = xmlreq.responseXML;
var ajaxResponse = ajaxXml.getElementsByTagName("ajax-response")[0];
callback(ajaxResponse, thisObj, srcObjs, destObjs, runJsStatus);
} else {
gAjaxExecStatus = false;
if (!orteusSubmitStatus) {
alert("サーバ処理に失敗しました!");
}
}
}
}
xmlreq.send(data);
}
/*
* 7_3 共通用のAjaxメソッドを呼び出す
*/
function callAjax(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback) {
// Jsでテキストボックス、テキストエリアに内容を設定する時に、Ajax処理が実行できるかどうかの判断
// 上記以外の場合、gCanExecAjaxStatusが必ずtrueのため、Ajax処理を必ず実行する
if (!gCanExecAjaxStatus) {
gCanExecAjaxStatus = true;
return;
}
switch (runJsStatus) {
case CT_DISP_CONTENT :
callAjaxDispComm(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback);
break;
case CT_SCTBOX_BLANK_CDE_NAM :
case CT_SCTBOX_NOBLANK_CDE_NAM :
case CT_SCTBOX_BLANK_ONLY_NAM :
case CT_SCTBOX_NOBLANK_ONLY_NAM :
callAjaxSctBox(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback);
break;
default :
break;
}
}
/*
* 7_4 画面にDB内容を表示するAjaxの呼び出し
*/
function callAjaxDispComm(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback) {
if (isBlankOrNull(callback)) {
callback = setAjaxDispContent;
}
if (isBlankOrNull(url)) {
// Java側の共通処理の設定
url = "/AjaxCommonServlet.ajax";
}
var ajaxUrl = gContextPath + url + getQueryString(srcObjs, runJavaStatus);
sendRequest("get", ajaxUrl, null, true, callback, thisObj, srcObjs, destObjs, runJsStatus);
}
/*
* 7_5 Ajaxからの返却値を画面項目に設定【XML文字列版】
*/
function setAjaxDispContent(ajaxResponse, thisObj, srcObjs, destObjs, runJsStatus) {
var ajaxStatus = "";
try {
ajaxStatus = ajaxResponse.getElementsByTagName("status")[0].firstChild.nodeValue;
} catch (e) {
// 何もしない
}
if (ajaxStatus == "true") { // 正常の場合
var contents = ajaxResponse.getElementsByTagName("content");
var contCnt = contents.length;
var destIndex = 0;
for (var i = 0; i < contCnt; i++) {
var items = contents[i].getElementsByTagName("item");
var itemCnt = items.length;
for (var j = 0; j < itemCnt; j++) {
try {
// 4/10 修正 ここから
//var val = items[j].getElementsByTagName("value")[0].firstChild.nodeValue;
var val = "";
try {
val = items[j].getElementsByTagName("value")[0].firstChild.nodeValue;
} catch (e) {}
// 4/10 修正 ここまで
var obj = destObjs[destIndex];
var objCnt = obj.length;
if (objCnt == null) { // 対象は画面の項目
setValue(obj, val);
} else { // 対象は配列の場合
for (var k = 0; k < objCnt; k++) {
setValue(obj[k], val);
}
}
} catch (e) { // NULLの場合
// 何もしない
}
destIndex++;
}
}
setObjsColor(srcObjs, NORMAL_COLOR);
} else if (ajaxStatus == "false") { // 異常の場合
setObjsColor(srcObjs, ERROR_COLOR);
clearValue(destObjs);
} else if (ajaxStatus == "SESSION_TIME_OUT") { // タイムアウトの場合
window.location = gContextPath + "/SessionTimeout.jsp";
}
// 4/17 追加 ここから
var kytRefAuth = "";
var btnStatus = "";
var callback = "";
try {
kytRefAuth = ajaxResponse.getElementsByTagName("auth-value")[0].firstChild.nodeValue;
btnStatus = ajaxResponse.getElementsByTagName("btn-status")[0].firstChild.nodeValue;
callback = ajaxResponse.getElementsByTagName("callback")[0].firstChild.nodeValue;
} catch (e) {
// 何もしない
}
if (!isBlankOrNull(kytRefAuth)) {
setBtnStatus(parseInt(kytRefAuth), btnStatus, callback);
}
// 4/17 追加 ここまで
gAjaxExecStatus = false;
}
/*
* 7_6 画面の項目の値のクリア(select box内容動的なクリアを除く)
*/
function clearValue(objs) {
var len = objs.length;
for (var i = 0; i < len; i++) {
var obj = objs[i];
try {
var len2 = obj.length;
if (len2 == null) { // 対象は画面の項目
setValue(obj, "");
} else { // 対象は配列の場合
for (var j = 0; j < len2; j++) {
setValue(obj[j], "");
}
}
} catch (e) { // NULLの場合
// 何もしない
}
}
}
/*
* 7_7 画面の項目の値の設定(select box内容動的な設定を除く)
* ・span、divの場合、innerTextで設定
* ・checkbox、radioboxの場合、checkedで設定
* ・textbox、hiddenの場合、valueで設定
* ・selectboxの場合、valueで設定(selectboxの内容が動的に設定されるのは、対応していない)
*/
function setValue(obj, val) {
if (obj != null) {
var tagName = obj.tagName.toUpperCase();
var type = obj.type;
if (tagName == "SPAN" || tagName == "DIV") {
if (isBlankOrNull(val)) {
val = " ";
}
obj.innerText = val;
} else if (type == "checkbox" || type == "radio") {
if (obj.value == val) {
if (!obj.checked) {
obj.checked = true;
setObjChange(obj);
}
} else {
if (obj.checked) {
obj.checked = false;
setObjChange(obj);
}
}
} else if (type == "text" || type == "hidden" || type == "file" || type == "password" || type == "textarea") {
if (type != "hidden") {
setText(obj, val);
} else {
obj.value = val;
}
} else if (type == "select-one") {
if (obj.value != val) {
obj.value = val;
setObjChange(obj);
}
}
}
}
/*
* 7_8 リストボックスのAjaxの呼び出し
*/
function callAjaxSctBox(thisObj, srcObjs, destObjs, runJavaStatus, url, callback, runJsStatus) {
if (isBlankOrNull(callback)) {
callback = setAjaxSctBox;
}
if (isBlankOrNull(url)) {
// Java側の共通処理の設定
url = "/AjaxCommonServlet.ajax";
}
var ajaxUrl = gContextPath + url + getQueryString(srcObjs, runJavaStatus);
sendRequest("get", ajaxUrl, null, true, callback, thisObj, srcObjs, destObjs, runJsStatus);
}
/*
* 7_9 リストボックスにAjaxからの返却値を設定【XML文字列版】
*/
function setAjaxSctBox(ajaxResponse, thisObj, srcObjs, destObjs, runJsStatus) {
clearSctBox(destObjs);
var ajaxStatus = "";
try {
ajaxStatus = ajaxResponse.getElementsByTagName("status")[0].firstChild.nodeValue;
} catch (e) {
// 何もしない
}
if (ajaxStatus == "true") { // 正常の場合
var sctBoxes = ajaxResponse.getElementsByTagName("content");
var sctBoxCnt = sctBoxes.length;
for (var i = 0; i < sctBoxCnt; i++) {
var items = sctBoxes[i].getElementsByTagName("item");
var itemCnt = items.length;
var destSctBox = destObjs[i];
if (runJsStatus == CT_SCTBOX_BLANK_CDE_NAM || runJsStatus == CT_SCTBOX_BLANK_ONLY_NAM) {
destSctBox.options.add(new Option("", ""));
}
for (var j = 0; j < itemCnt; j++) {
var name = "";
var value = "";
try {
name = items[j].getElementsByTagName("name")[0].firstChild.nodeValue;
} catch (e) {
// 何もしない
}
try {
value = items[j].getElementsByTagName("value")[0].firstChild.nodeValue;
} catch (e) {
// 何もしない
}
if (name != "" || value != "") {
if (runJsStatus == CT_SCTBOX_BLANK_CDE_NAM || runJsStatus == CT_SCTBOX_NOBLANK_CDE_NAM) {
destSctBox.options.add(new Option(name + ":" + value, name));
} else if (runJsStatus == CT_SCTBOX_BLANK_ONLY_NAM || runJsStatus == CT_SCTBOX_NOBLANK_ONLY_NAM) {
destSctBox.options.add(new Option(value, name));
}
}
}
setObjChange(destSctBox);
}
setObjsColor(srcObjs, NORMAL_COLOR);
} else if (ajaxStatus == "false") { // 異常の場合
setObjsColor(srcObjs, ERROR_COLOR);
} else if (ajaxStatus == "SESSION_TIME_OUT") { // タイムアウトの場合
window.location = gContextPath + "/SessionTimeout.jsp";
}
gAjaxExecStatus = false;
}
/*
* 7_10 リストボックスのクリア
*/
function clearSctBox(objs) {
var len = objs.length;
for (var i = 0; i < len; i++) {
objs[i].options.length = 0;
setObjChange(objs[i]);
}
}
/*
* 7_11 Request用の引数の取得
*/
function getQueryString(srcObjs, runJavaStatus) {
var queryString = "?runStatus=" + escape(runJavaStatus);
var len = srcObjs.length;
for (var i = 1; i <= len; i ++) {
if (srcObjs[i - 1] == null) {
queryString += "&srcValue" + i + "=";
} else {
var type = srcObjs[i - 1].type;
if (type == null) {
queryString += "&srcValue" + i + "=" + escape(srcObjs[i - 1]);
} else {
if (type == "text" || type == "password" || type == "checkbox"
|| type == "radio" || type == "file" || type == "hidden"
|| type == "select-one" || type == "textarea") {
queryString += "&srcValue" + i + "=" + escape(srcObjs[i - 1].value);
}
}
}
}
return queryString;
}
///
function setObjsColor(objs, colorType) {
var len = objs.length;
for (var i = 0; i < len; i ++) {
if (objs[i] != null) {
var type = objs[i].type;
if (type == "text" || type == "password" || type == "checkbox"
|| type == "radio" || type == "file" || type == "select-one" || type == "textarea") {
setFieldColor(objs[i], colorType);
}
}
}
}
function setObjChange(obj) {
gCanExecAjaxStatus = false;
obj.fireEvent('onchange');
gCanExecAjaxStatus = true;
}
function setBtnStatus(kytRefAuth, btnStatus, callback) {
// ボタンオブジェクトの取得
var objBtnSearch = document.getElementById("btnSearch");
if (objBtnSearch == null) {
objBtnSearch = document.getElementById("btnSelect");
}
var objBtnNew = document.getElementById("btnNew");
var objBtnFKey5 = document.getElementById("btnFKey5");
var objBtnFKey9 = document.getElementById("btnFKey9");
var objBtnFKey11 = document.getElementById("btnFKey11");
var objBtnFKey12 = document.getElementById("btnFKey12");
// 業務的にボタン制御を行う
var objBtnArr = new Array(objBtnSearch, objBtnNew, objBtnFKey5, objBtnFKey9, objBtnFKey11, objBtnFKey12);
var len = btnStatus.length;
for (var i = 0; i < len; i++) {
if (objBtnArr[i] != null) {
if (btnStatus.charAt(i) == "1") {
objBtnArr[i].disabled = false;
} else {
objBtnArr[i].disabled = true;
}
}
}
// 共通的にボタン制御を行う
switch (kytRefAuth) {
case 1 :
// 拠点参照権限が1の場合、全部のボタンを利用可にする
// 共通的に制御を行わなく、業務的な制御のままでいい
break;
case 2 :
// 拠点参照権限が2の場合
// 「F9 CSV出力」ボタンを利用不可にする
if (objBtnFKey9 != null) { objBtnFKey9.disabled = true; }
// 他のボタンを全部利用可にする
// 共通的に制御を行わなく、業務的な制御のままでいい
break;
case 3 :
// 拠点参照権限が3の場合
// 「検索」と「F11 印刷」ボタンを利用可にする
// 共通的に制御を行わなく、業務的な制御のままでいい
// 他のボタンを全部利用不可にする
if (objBtnNew != null) { objBtnNew.disabled = true; }
if (objBtnFKey5 != null) { objBtnFKey5.disabled = true; }
if (objBtnFKey9 != null) { objBtnFKey9.disabled = true; }
if (objBtnFKey12 != null) { objBtnFKey12.disabled = true; }
break;
case 0 :
default :
// 拠点参照権限が0 或は 0、1、2、3以外の場合、全部のボタンを利用不可にする
if (objBtnSearch != null) { objBtnSearch.disabled = true; }
if (objBtnNew != null) { objBtnNew.disabled = true; }
if (objBtnFKey5 != null) { objBtnFKey5.disabled = true; }
if (objBtnFKey9 != null) { objBtnFKey9.disabled = true; }
if (objBtnFKey11 != null) { objBtnFKey11.disabled = true; }
if (objBtnFKey12 != null) { objBtnFKey12.disabled = true; }
break;
}
// プログラムごとに項目を制御する
if (isBlankOrNull(callback)) {
callback = dummy;
} else {
callback = eval(callback);
}
callback(kytRefAuth);
}
function dummy(kytRefAuth) {}
///