<script>

{*-- ここからjsでのデータ表示用 ---------------------------------------------------*}
let detail_data=[];
let new_data={};

function chkPageError() { {*表示中のページをチェック!*}
  var frm = $("#headerTop");
  var detail = $("#detail .detail");
  var errflg = false;

  common.clearFormError(detail);
  
  let cnt = 0;
  //先頭行から最終行までチェック
  for(i = 0 ; i < detail.length ; i++) {
    var $me = $(detail[i]);
    if(!(stringUtil.isEmpty($me.find(".iseq").val())) || !(stringUtil.isEmpty($me.find(".jan").val()))) {

      {*必須チェック*}
      if(stringUtil.isEmpty($me.find(".jan").val())) {
        common.addError($me.find(".jan"), "入力して下さい。", null, true);
        errflg = true;
      }

      if (stringUtil.isEmpty($me.find(".vseq").val())) {  {*新規*}
        if (stringUtil.isEmpty(common.getValue($me.find(".wpno")))) {
          var w_wpno = -1;
        } else{
          var w_wpno = new BigNumber(stringUtil.nvl0(common.delFigure(common.getValue($me.find(".wpno"))),"0"));
        }
      } else {  {*修正*}
        if (stringUtil.isEmpty(common.getValue($me.find(".wpno")))) {
          var w_wpno = 0;
        } else{
          var w_wpno = new BigNumber(stringUtil.nvl0(common.delFigure(common.getValue($me.find(".wpno"))),"0"));
        }
      }
      if(w_wpno < 0) {
        errflg = true;
        common.addError( $me.find(".wpno"), "棚卸数には０以上を入力して下さい。", null, true);
      }
      
    }

  }
  return errflg;
}

function setArrayData(pgno) {
  var detail = $("#detail .detail");

  if(chkPageError()) { {*配列に格納する前に、妥当性チェック*}
    return false;
  } else {
    if(pgno == $("#lastpage").val()) { {*新規*}
      new_data = [];
      for(i = 0 ; i < detail.length ; i++) {
        let $me = $(detail[i]);
        var new_elem = {};
        var putflg = false;
        if(!stringUtil.isEmpty($me.find(".jan").val()) {*入力があるものだけ配列に入れる*}
        || !stringUtil.isEmpty($me.find(".wpno").val())
        ) {
          putflg = true;
          $me.find("input, select").each(function (index) {
            var inputnm = $(this).attr("name");
            new_elem[inputnm] = common.getValue($(this));
          });
          new_elem["pgno"] = $("#lastpage").val();
          if(putflg) {
            new_data.push(new_elem);
          }
        }
      }
    } else { {*既存更新*}
      for(i = 0 ; i < detail.length ; i++) {
        let $me = $(detail[i]);
        var rnum = Number($me.find(".rnum").val())-1;
        $me.find("input, select").each(function (index) {
          var inputnm = $(this).attr("name");
          if(i == 0) {
            //console.log("["+rnum+"]"+inputnm+":"+common.getValue($(this)));
          }
          detail_data[rnum][inputnm] = common.getValue($(this));
        });
      }
    }

    //console.log(detail_data);
    //console.log(new_data);
    return true;
  }
}
function dsp_detail(p_pgno) {
  $("#detail .detail").remove();

  var frm = $("#headerTop");
  var el = "";

  //console.log(p_pgno+"/"+$("#lastpage").val());

  if(p_pgno == $("#lastpage").val()) { {*最終ページは新規用ページ*}
    common.setValue(frm.find(".modelbl"), "新規");
    var ret_len = new_data.length;
    for (var i = 0; i < ret_len; i++) {
      el += af2a2x_detail.appendRow(new_data[i]);
    }
  } else {
    common.setValue(frm.find(".modelbl"), "修正");
    var ret_len = detail_data.length;
    for (var i = 0; i < ret_len; i++) { {*既存データページを表示*}
      if (Number(detail_data[i].pgno) == Number(p_pgno)) {
        el += af2a2x_detail.appendRow(detail_data[i]);
      }
    }
  }

  $("#detail").append(el);

  if(p_pgno == $("#lastpage").val()) { {*最終ページは新規用ページ*}
    if($("#detail .detail").length == '0'){
      setOneRow(); {*最初の１行を表示*}
      doHeaderEnable('D');

      var frm = $("#headerTop");
      var detail = $("#detail .detail");
      if(!stringUtil.isEmpty(common.getValue(frm.find(".cucd")))) {
        common.setValue(detail.find(".cvsno"),1);
      }

    } else {
      $("#lastDetail").focus(); {*１行追加*}
    }
  } else {
    doHeaderEnable('D');
  }

  var detail = $("#detail .detail");
  
  for(i = 0 ; i < detail.length ; i++) {
    var $me = $(detail[i]);

    $me.find("select").each(function(index) {
      var $selectVal = $(this);
      common.setValue($selectVal,common.getValue($me.find(".memo"+$selectVal.attr("name"))));
    });
    
    //違算チェック
    if(common.getValue($me.find(".psum")) != common.getValue($me.find(".wpno"))){
      common.setValue($me.find(".msg"),"違算あり");
    }else{
      common.setValue($me.find(".msg"),"");
    }
  }

  if(common.getValue(frm.find(".fmode")) == "0"){
    common.setValue(frm.find(".fmode"),"1");
    common.setValue($("#topmenu").find(".Func11"),"全て(F11)");
    $("#detail .detail").first().find(".jan").focus();
  } else{
    common.setValue(frm.find(".fmode"),"0");
    common.setValue($("#topmenu").find(".Func11"),"通常(F11)");
    $("#detail .detail").first().find(".wpno").focus();
  }
  //$("#detail .detail").first().find(".keycd").focus();
}


function doHeaderEnable(pmode) { {*pmode:H Header有効・D 明細有効*}
  let h = $("#headerTop");
  let h1 = h.find(".header1");
  let h2 = h.find(".header2");
  let d = $("#detailTop");
  let m = $("#funcMenu");
  let mode = h.find(".mode").val();
  if (pmode == "H") { {*Header有効*}
    h.removeClass("noevent");
    d.addClass("noevent");
    $(".Func2").removeClass("noevent");
    $(".Func5").addClass("noevent");
    $(".Func9").addClass("noevent");
    $(".Func11").removeClass("noevent");
    $(".Func12").removeClass("noevent");

    if (h.find(".fmode").val() == "0"){
      common.setValue($("#topmenu").find(".Func11"),"全て(F11)");
      common.setValue(h.find(".fmode"),"1"); 
    }else{
      common.setValue($("#topmenu").find(".Func11"),"通常(F11)");
      common.setValue(h.find(".fmode"),"0"); 
    }

    {*ヘッダー項目クリア*}
    h.find(".modelbl").removeClass("newLabel");
    {*ヘッダーフォーカス*}
    h.find(".keycd")[0].focus();
  } else {
    h.addClass("noevent");

    d.removeClass("noevent");
    $(".Func2").addClass("noevent");
    $(".Func5").removeClass("noevent");
    $(".Func9").removeClass("noevent");
    $(".Func11").removeClass("noevent");
    $(".Func12").removeClass("noevent");

    {*ヘッダー項目*}
    h.find(".modelbl").addClass("newLabel");
    {*データ部フォーカス*}
    if(common.getValue(h.find(".fmode")) == "0"){
      common.setValue($("#topmenu").find(".Func11"),"全て(F11)");
      common.setValue(h.find(".fmode"),"1");
      d.find(".jan")[0].focus();
    } else{
      common.setValue(h.find(".fmode"),"0");
      common.setValue($("#topmenu").find(".Func11"),"通常(F11)");
      d.find(".wpno")[0].focus();
    }
    //d.find(".jan")[0].focus();
  }
}

function clearHeader() {  {*headerクリア*}
  let frm = $("#headerTop");
  let container = frm.closest(".container");
  doHeaderEnable("H");
  common.clearInputData(container);
  $('[name=mode]').prop("selectedIndex", 0);
  $('[name=mode]').trigger("change");
  {*初期値設定*}
  $('input:radio[name="cls1"]').val(["8"]);
  $('input:radio[name="cls"]').val(["1"]);
  
}

var init_data={
  vlin:'1',
};

function clearDetail() {
  common.clearAllError();
  $("#detail .detail").remove(); {*明細クリア*}
  $("#lastDetail").show();

  {*明細ヘッダー*}
  let frm = $("#headerTop");
  let mode = common.getValue(frm.find(".mode"));
  var detailHeader = $("#detailHeader");
  if(mode == '1') {
    detailHeader.find(".detailHeader1").show();
    detailHeader.find(".detailHeader2").hide();
  } else if(mode == '2') {
    detailHeader.find(".detailHeader1").hide();
    detailHeader.find(".detailHeader2").show();
  }
}

function setOneRow() {
  clearDetail();  {*一旦クリア*}
  {*明細に最初の一行追加*}
  var el = af2a2x_detail.appendRow(init_data);
  $("#detail").append(el);
  var detail = $("#detail").find(".detail");
  detail.find(".datepicker").each(function (index) {
    common.setDatepickerInfo($(this));
  });

  detail.find(".popbtn").each(function (index) {
    common.setValue($(this),"?");
  });

}

function chgDetail(pgno) {  {*明細表表示・非表示*}
  let wpgno = "pgno" + pgno;

  dsp_detail(pgno);

  if (common.getValue($("#pagecnt")) == common.getValue($("#lastpage"))) { {*次頁なし*}
    $("#funcMenu").find(".Func7").addClass("noevent");
  } else {
    $("#funcMenu").find(".Func7").removeClass("noevent");
  }
  if (common.getValue($("#pagecnt")) == "1") { {*前頁なし*}
    $("#funcMenu").find(".Func8").addClass("noevent");
  } else {
    $("#funcMenu").find(".Func8").removeClass("noevent");
  }

}

function dspDetail() { {*データ表示*}
  let frm = $("#headerTop");
  let detail = $("#detail").find(".detail");

  clearDetail();  {*一旦クリア*}

  {*明細行配列クリア*}
  detail_data.splice(0);

  {if $header.ret == "0"}
    {*配列作成*}
    detail_data = {$dataList};

    {*行作成*}
    dsp_detail(1);

    doHeaderEnable("D")
    {*頁情報*}
    chgDetail("1");

  {else if $header.ret == "new"}
    setOneRow();
    doHeaderEnable("H")
  {else if $header.ret == "1"}
    dsp_detail("1");
    doHeaderEnable("D")
    {*頁情報*}
    chgDetail("1");
    common.setValue($("#pagecnt"), "1");
    common.setValue($("#lastpage"), "1");
    //setOneRow();
    //doHeaderEnable("D")
    common.setValue(frm.find(".modelbl"), "新規");
    {*頁情報*}
  {else}
    setOneRow();
    doHeaderEnable("H")
    {if $hasError eq true}
      alert("{$errorMsg}")
    {/if}
  {/if}

}

{*明細行用関数*}
var af2a2x_detail = {
  appendRow: function (d) {
    let frm = $("#headerTop");
    let mode = common.getValue(frm.find(".mode"));
    var n = stringUtil.nvl;
    var row =
    ' <div class="col wp-100 detail"> ' +
    '<div class="col wp-100 rowinfo detailMain janGrp">' +
    '  <div class="col wp-100"> ' +
    '    <input name="num" type="text" class="form-control input-sm item wd-kbn num center" readonly value="' + n(d.rnum) + '"/>' +
    '    <input name="jan" type="text" class="form-control input-sm item wd-jan jan eventjan popJan" maxlength="13" value="' + n(d.jan) + '"> '+
    '    <input type="button" class="col popbtn cmdJan " tabindex="-1" value="?"/> '+
    '    <input name="gdcls9nm" type="text" class="form-control input-sm item wd-kbn gdcls9nm center" readonly value="' + n(d.gdcls9nm) + '"> '+
    '    <input name="gdjnm" type="text" class="form-control input-sm item wd-300 gdjnm longnm"  readonly value="' + n(d.gdjnm) + '"> '+
    '    <input name="gdjstnd" type="text" class="form-control input-sm item wd-300 gdjstnd longnm"  readonly value="' + n(d.gdjstnd) + '"> '+
    '    <input name="psum" type="text" class="form-control input-sm item wd-number psum number" readonly value="' + common.addFigure(n(d.psum)) + '"> '+
    '    <input name="wpno" type="text" class="form-control input-sm item wd-number wpno number" value="' + common.addFigure(n(d.wpno)) + '"> '+
    '    <input name="msg" type="text" class="form-control input-sm item wd-100 ms1g in-required" readonly value="' + n(d.msg) + '"> '+
    '  </div>' +
    {*非表示項目*}
    '  <input name="rnum" type="hidden" class="rnum" value="' + n(d.rnum) + '"/>' +
    '  <input name="iseq" type="hidden" class="iseq" value="' + n(d.iseq) + '"/>' +
    '  <input name="ijan" type="hidden" class="ijan" value="' + n(d.ijan) + '"/>' +
    '  <input name="iloc" type="hidden" class="iloc" value="' + n(d.ijan) + '"/>' +
    '  <input name="gdcls9" type="hidden" class="gdcls9" value="' + n(d.gdcls9) + '"/>' +
    '  <input name="ord_vlin" type="hidden" class="ord_vlin keyItem forDeleteData" value="' + n(d.vlin) + '"/>' +
    '  <input name="ord_jan" type="hidden" class="ord_jan keyItem forDeleteData" value="' + n(d.jan) + '"/>' +
    '  <input name="old_wpno" type="hidden" class="ord_wpno keyItem forDeleteData" value="' + n(d.wpno) + '"/>' +
    '<hr>' +
    '</div>' +
    ' </div> ';


    return row;
  },
}


{*-- ここまでjsでのデータ表示用 ---------------------------------------------------*}


  function setNewLineData($me) {
    let frm = $("#headerTop");
    let mode = common.getValue(frm.find(".mode"));
    let detail = $me.closest(".contents").find(".detail.selectRow");

    detail.find(".popbtn").each(function (index) {
      common.setValue($(this),"?");
    });
    
    if(common.getValue(frm.find(".fmode")) == "0"){
      detail.find(".jan").focus();
      common.setValue(frm.find(".fmode"),"1");
      common.setValue($("#topmenu").find(".Func11"),"全て(F11)");
    } else{
      detail.find(".wpno").focus();
      common.setValue(frm.find(".fmode"),"0");
      common.setValue($("#topmenu").find(".Func11"),"通常(F11)");
    }
    //detail.find(".jan").focus();
  }


  $(document).ready(function(){
    /* 明細 高さ 自動設定
    //===================================================================*/
    common.setDetailHeight( $("#detail") );

    common.removeLoading();
    dspDetail();  {*明細表示*}

    /* イベント
    //===================================================================*/
    //　F1
    $(document).on("click", ".Func1:not('.noevent')", function(e) {
    });
    //　F2
    $(document).on("click", ".Func2:not('.noevent')", function(e) {
      $(".btn-search-before").trigger("click");
    });
    //　F3 行挿入
    $(document).on("click", ".Func3:not('.noevent')", function(e) {
    });
    //　F4 行削除
    $(document).on("click", ".Func4:not('.noevent')", function(e) {
    });
    //　F5 クリア
    $(document).on("click", ".Func5:not('.noevent')", function(e) {
        clearHeader();
        setOneRow();
    });
    //　F6
    $(document).on("click", ".Func6:not('.noevent')", function(e) {
    });
    //　F7 次頁
    $(document).on("click", ".Func7:not('.noevent')", function(e) {
      if(setArrayData($("#pagecnt").val())) { {*現在ページの変更を配列に記憶*}
        let pgcnt = 0;
        if (stringUtil.isEmpty(common.getValue($("#pagecnt")))) {
          pgcnt = 1;
        } else {
          pgcnt = Number(common.getValue($("#pagecnt"))) + 1;
        }
        common.setValue($("#pagecnt"),pgcnt); //最初は1ページ
        chgDetail(String(pgcnt));
      } else {
        alert("エラーがあります");
      }      
    });
    //　F8 前頁
    $(document).on("click", ".Func8:not('.noevent')", function(e) {
      if(setArrayData($("#pagecnt").val())) { {*現在ページの変更を配列に記憶*}
        let pgcnt = 0;
        if (stringUtil.isEmpty(common.getValue($("#pagecnt")))) {
          pgcnt = 1;
        } else {
          pgcnt = Number(common.getValue($("#pagecnt"))) - 1;
        }
        common.setValue($("#pagecnt"),pgcnt); {*最初は1ページ*}
        chgDetail(String(pgcnt));
      } else {
        alert("エラーがあります");
      }
    });
    //　F9 登録/実行
    $(document).on("click", ".Func9:not('.noevent')", function(e) {
      $(".btn-reg-before").trigger("click");
    });
    //　F10 Excel
    $(document).on("click", ".Func10:not('.noevent')", function(e) {
    });
    //　F11 表示
    $(document).on("click", ".Func11:not('.noevent')", function(e) {
      var frmh = $(this).closest(".contents").find(".header");
      
      if (frmh.find(".fmode").val() == "0"){
        common.setValue($("#topmenu").find(".Func11"),"全て(F11)");
        common.setValue(frmh.find(".fmode"),"1"); 
        $("#detail .detail").first().find(".jan").focus();
      }else{
        common.setValue($("#topmenu").find(".Func11"),"通常(F11)");
        common.setValue(frmh.find(".fmode"),"0"); 
        $("#detail .detail").first().find(".wpno").focus();
      }
    });
    //　F12 メニュー/戻る
    $(document).on("click", ".Func12:not('.noevent')", function(e) {
      $('.btn-close').trigger('click');
    });

    //画面初期表示時動作

    //MENUボタン===============================
    $(document).on("regSuccess", ".btn-reg", function(e,option){
      //setOneRow();
      //clearHeader();
      //alert("登録しました");
      if(option.ret == '0') {
        if(option.dcnt == '0') {
          w_msg = "登録しました。\n伝票番号は【"+option.vseq+"】です。\n";
        } else {
          w_msg = "伝票"+option.dcnt+"枚を登録しました。\n最終伝票番号は【"+option.vseq+"】です。";
        }
        alert(w_msg);
        setOneRow();
        clearHeader();
      } else {
        if(option.ret == '-3') {
          alert("他の端末で実行中です");
        } else {
          alert("登録に失敗しました。("+option.ret+")");
        }

      }
    });

    $(document).on("click", ".btn-search-before", function(e) {
      $(".Func2").addClass("noevent");

      var errflg = false;
      var frmh = $(this).closest(".contents").find(".header");
      var mode = common.getValue(frmh.find(".mode"));
      common.clearFormError(frmh);

      if(stringUtil.isEmpty(frmh.find(".ktktcd").val())) {
        errflg = true;
        common.addError(frmh.find(".ktktcd"), "入力して下さい", null, true);
      }
      
      if (errflg) {
        alert('エラーがあります');
        $(".Func2").removeClass("noevent");
      } else {
        if(stringUtil.isEmpty(frmh.find(".vseq").val())) {
          common.setValue($("#topmenu").find(".Func11"),"全て(F11)");
          common.setValue(frmh.find(".fmode"),"0");       
        } else {
          common.setValue($("#topmenu").find(".Func11"),"通常(F11)");
          common.setValue(frmh.find(".fmode"),"1");       
        }
        common.dispLoading();
        $("#pagecnt").val("1");
        $(".btn-search").trigger("click");
      }
    });

    $(document).on("click", ".btn-reg-before", function(e) {
      var frmh = $(this).closest(".contents").find(".header");
      var detail = $("#detail .detail");
      var errflg = false;
      var wret;
      
      common.clearAllError();
      if(setArrayData($("#pagecnt").val())) { {*現在ページの変更を配列に記憶 ついでに必須チェックも行っている。*}

        //必須チェック
        if(stringUtil.isEmpty(frmh.find(".ktktcd").val())) {
          errflg = true;
          common.addError(frmh.find(".ktktcd"), "入力して下さい", null, true, false);
        }

        let w_tgcnt = 0;
        let cnt = 0;

        var chk_array = detail_data.concat(new_data); {*チェック用配列として、元データ配列と新規データ配列を結合*}

        //先頭行から最終行までチェック
        for (var i = 0; i < detail.length; i++) {
          $me = $(detail[i]);
          if(!(stringUtil.isEmpty($me.find(".iseq").val())) || !(stringUtil.isEmpty($me.find(".jan").val()))) {
            w_tgcnt = w_tgcnt +1;
          }
        }

        if(w_tgcnt == 0) {
          errflg = true;
          common.addError($me.find(".jan"), "棚卸データを入力してください。", null, true);
        }

        if(errflg) {
          alert("エラーがあります");
          return false;
        } else {
          //$(".headermenu").find(".btn-reg").trigger("click");
          if(window.confirm("登録します。よろしいですか？")) {
            var headerData = [];
            var f = common.getInputData(frmh);
            headerData.push(encodeJson(f));

            var sendData = {};
            sendData["header"] = headerData;
            sendData["data"] = chk_array;

            var me = $(this);
            var errorFunc = $(this).attr("errorFunc");

            setComplianceData("reg", sendData);

            common.dispLoading();

            common.postData(
              "./update.php"
              , sendData
              , function (data, options) {
                common.removeLoading();
                $(".btn-reg").trigger("regSuccess", [data, options]);
              }
              , function (error, options) {
                common.removeLoading();
                alert("登録に失敗しました[" + error.msg + "]");
                $(".btn-reg").trigger("regError", [error, options]);
              }
            );
          }
        }

      }
    });

    $(document).on("focus", ".header .dummy", function(e) {
      $("#topmenu").find(".Func2").focus();
    });
    $(document).on("focus", ".dummy2", function(e) {
      $("#topmenu").find(".Func9").focus();
    });

    //=== header ===
    $(document).on("change", ".header .vseq", function(e) {  
    });

    //=== body ===
    $(document).on("afterSelectAfm02x", "#detail .jan", function(e) {
      get_psum($(this));
    });
    $(document).on("clearChangeJan", "#detail .jan", function(e) {
      get_psum($(this));
    });
    $(document).on("afterChangeJan", "#detail .jan", function(e) {
      get_psum($(this));
    });
    
    function get_psum($me) {
      let inpcd = common.getValue($me);
      var grp = $me.closest(".janGrp");
      var detail = $me.closest(".detail");

      common.setValue(grp.find(".psum"),"");
      
      if(stringUtil.isEmpty(inpcd)) {
        return false;
      }

      var $frmh = $("form.header");

      var sendData = {};
      sendData["jan"]  = inpcd;
      sendData["spktcd"]  = common.getValue($frmh.find(".ktktcd"));
      sendData["cls1"]  = common.getValue($frmh.find(".cls1"));

      common.postData(
          "./getPsum.php"
        , sendData
        , function (data) {
          // 特殊処理があれば
          var obj = JSON.parse(data);
          let ret = obj.ret;
console.log("ret:"+ret);
          if(ret == '0') {
            common.setValue(grp.find(".psum"),common.addFigure(obj.psum));
          } else {
            common.setValue($me,"");
            common.addError($me, obj.msg, null);
          }
        }
        , function (error) {
          alert(error.msg);
        }
      );
    }

    //====明細行動作======
    $(document).on("insertLine", ".selectRow", function(e) {
      setNewLineData($(this));
    });

    $("#lastDetail").focus(function(){
      var details = $("#detailTop .detail:last")[0];
      if(!!!details){
        return true;
      }

      if($("#pagecnt").val() != $("#lastpage").val()) {
        $("#topmenu").find(".Func8").focus();
        return false;
      }

      var newRow = commonLine.insertDetail(details);
      common.setDetailHeight();
      $(newRow).find(":enabled")[0].focus();
      $(window).scrollTop($(newRow).parent().offset().top);
      setNewLineData($(newRow));
    });


    //=== footer ===


  });

</script>
