/*
* 备品借出申请
*/
(function(win) {
//*******************************************************************************************************
// パラメータ
//*******************************************************************************************************
TEXT_AREA_ID = "00N10000003MspG";
LOCAL_HREF = document.location.href;
SPLIT_ROW = "\n";
SPLIT_COL1 = ",";
SPLIT_COL2 = "(";
SPLIT_COL3 = ")";
//*******************************************************************************************************
// textareaをtableに変換
//*******************************************************************************************************
win._sfMakeTextAreaTable = function() {
var ins = document.getElementById(TEXT_AREA_ID);
var insVal = ins.value;
var tbl = document.createElement("table");
// ヘッダ作成
var th1 = document.createElement("th");th1.style.width="150px";
var th2 = document.createElement("th");th2.style.width="30px";
var th3 = document.createElement("th");th3.style.width="150px";
th1.innerHTML = "型式";
th2.innerHTML = "数量";
th3.innerHTML = "备注";
tbl.appendChild(th1);
tbl.appendChild(th2);
tbl.appendChild(th3);
var tr;
var td;
if (insVal != "") {
var rows = insVal.split(SPLIT_ROW);
for (var i = 0; i < rows.length; i++) {
tr = document.createElement("tr");
var idx1 = rows[i].indexOf(SPLIT_COL1);
if (idx1 > 0) {
var col1 = rows[i].substring(0, idx1);
var col2 = rows[i].substring(idx1 + 1);
td = document.createElement("td");
td.innerHTML = "";
tr.appendChild(td);
var cols = col2.split(SPLIT_COL2);
td = document.createElement("td");
td.innerHTML = "";
tr.appendChild(td);
if (cols.length > 1) {
td = document.createElement("td");
td.innerHTML = "";
tr.appendChild(td);
} else {
td = document.createElement("td");
td.innerHTML = "";
tr.appendChild(td);
}
} else {
td = document.createElement("td");
td.innerHTML = "";
tr.appendChild(td);
td = document.createElement("td");
td.innerHTML = "";
tr.appendChild(td);
td = document.createElement("td");
td.innerHTML = "";
tr.appendChild(td);
}
tbl.appendChild(tr);
}
}
// 後ろ常に五行追加
for (var i = 0; i < 5; i++) {
tr = document.createElement("tr");
for (var j = 0; j < 3; j++) {
td = document.createElement("td");
td.innerHTML = "";
tr.appendChild(td);
}
tbl.appendChild(tr);
}
tbl.id = ins.id+"_new";
tbl.name = ins.name;
var insertedNode = ins.parentNode.insertBefore(tbl, ins);
ins.style.display="none";
// インラインDialogの場合
var origEnter = sfdcPage.getDialogById('InlineEditDialog').enter;
var origCancel = sfdcPage.getDialogById('InlineEditDialog').cancel;
var inlineEnter = function() {
sfdcPage.getDialogById('InlineEditDialog').enter = origEnter;
sfdcPage.getDialogById('InlineEditDialog').cancel = origCancel;
_sfMakeTextAreaStr();
if (sfdcPage.getInlineEditData().closeCurrentField()) {
sfdcPage.getDialogById("InlineEditDialog").hide();
}
ins.style.display="block";
ins.parentNode.removeChild(insertedNode);
}
var inlineCancel = function() {
sfdcPage.getDialogById('InlineEditDialog').enter = origEnter;
sfdcPage.getDialogById('InlineEditDialog').cancel = origCancel;
ins.value = insVal;
if (sfdcPage.getInlineEditData().closeCurrentField()) {
sfdcPage.getDialogById("InlineEditDialog").hide();
}
ins.style.display="block";
ins.parentNode.removeChild(insertedNode);
}
sfdcPage.getDialogById('InlineEditDialog').enter = inlineEnter;
sfdcPage.getDialogById('InlineEditDialog').cancel = inlineCancel;
// インラインDialogの場合、OKとキャンセルボタンがあります。
var e = document.getElementById("InlineEditDialog_buttons");
if (e) {
if (e = e.firstChild) {
e.setAttribute("onclick", "sfdcPage.getDialogById('InlineEditDialog').enter();");
}
if (e = e.nextSibling) {
e.setAttribute("onclick", "sfdcPage.getDialogById('InlineEditDialog').cancel();");
}
}
}
//*******************************************************************************************************
// tableの値をtextareaに書き戻す
//*******************************************************************************************************
win._sfMakeTextAreaStr = function() {
var tbl = document.getElementById(TEXT_AREA_ID + "_new");
var trs = tbl.getElementsByTagName('tr');
var finalStr = "";
for (var i = 0; i < trs.length; i++) {
for (var j = 0; j < trs[i].cells.length; j++) {
var cell = trs[i].cells[j];
var cellVal = cell.childNodes[0].value;
if (j == 0) {
if (cellVal == "") break;;
finalStr += cellVal;
}
if (j == 1) {
if (cellVal == "") cellVal = 0;
finalStr += SPLIT_COL1 + cellVal;
}
if (j == 2) {
if (cellVal == "") {
finalStr += SPLIT_ROW;
} else {
finalStr += SPLIT_COL2 + cellVal + SPLIT_COL3 + SPLIT_ROW;
}
}
}
}
// trim
finalStr = finalStr.replace(/(^\s+)|(\s+$)/g, "");
// テキストエリア項目に書き戻す
document.getElementById(TEXT_AREA_ID).value = finalStr;
}
//*******************************************************************************************************
// 初期処理
//*******************************************************************************************************
var run = function() {
if (LOCAL_HREF.match(/\/e/)) {
_sfMakeTextAreaTable();
} else {
// インライン編集の対応
var originalEvent = document.getElementById(TEXT_AREA_ID + "_ilecell");
if (originalEvent) {
addEvent(originalEvent, "dblclick", function(elems) {
return function(deepDataAndEvents) {
if (win.sfdcPage) {
if (win.sfdcPage.hasRun) {
sfdcPage.dblClickField(deepDataAndEvents, elems);
setTimeout("_sfMakeTextAreaTable()", 500);
}
}
};
}(originalEvent));
addEvent(originalEvent, "keypress", function(elems) {
return function(e) {
if (win.sfdcPage) {
if (win.sfdcPage.hasRun && (e && e.keyCode == KEY_ENTER)) {
sfdcPage.dblClickField(e, elems);
setTimeout("_sfMakeTextAreaTable()", 500);
}
}
};
}(originalEvent));
}
}
}
if (win.sfdcPage) {
sfdcPage.appendToOnloadQueue(function() {
if (LOCAL_HREF.match(/\/a0t/)) {
run();
}
});
}
})(window);