/*
 * 备品借出申请
 */
(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 = "<input type='text' style='width:95%;' value='" + col1 + "' onchange='_sfMakeTextAreaStr();' />";
                    tr.appendChild(td);
                    
                    var cols = col2.split(SPLIT_COL2);
                    td = document.createElement("td");
                    td.innerHTML = "<input type='text' style='width:95%;' value='" + cols[0] + "' onchange='_sfMakeTextAreaStr();' />";
                    tr.appendChild(td);
                    
                    if (cols.length > 1) {
                        td = document.createElement("td");
                        td.innerHTML = "<input type='text' style='width:95%;' value='" + cols[1].substring(0, cols[1].length - 1) + "' onchange='_sfMakeTextAreaStr();' />";
                        tr.appendChild(td);
                    } else {
                        td = document.createElement("td");
                        td.innerHTML = "<input type='text' value='' onchange='_sfMakeTextAreaStr();' />";
                        tr.appendChild(td);
                    }
                } else {
                    td = document.createElement("td");
                    td.innerHTML = "<input type='text' value='" + rows[i] + "' onchange='_sfMakeTextAreaStr();' />";
                    tr.appendChild(td);
                    
                    td = document.createElement("td");
                    td.innerHTML = "<input type='text' value='' onchange='_sfMakeTextAreaStr();' />";
                    tr.appendChild(td);
                    
                    td = document.createElement("td");
                    td.innerHTML = "<input type='text' value='' onchange='_sfMakeTextAreaStr();' />";
                    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 = "<input type='text' style='width:95%;' value='' onchange='_sfMakeTextAreaStr();' />";
                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);