<script>


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

let detail_data=[];
let new_data={};

function chkPageError() { {*表示中のページをチェック!*}
  var frm = $("#headerTop");
  var detail = $("#detail .detail");
  var errflg = false;
  for(i = 0 ; i < detail.length ; i++) {
    var $me = $(detail[i]);

    if(stringUtil.isEmpty(common.getValue($me.find(".htcls")))) {
      errflg = true;
      common.addError($me.find(".htcls"), "選択して下さい", null, true);
    }
    if(stringUtil.isEmpty(common.getValue($me.find(".htpcls")))) {
      errflg = true;
      common.addError($me.find(".htpcls"), "選択して下さい", null, true);
    }


  }

  return errflg;
}


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

  if(chkPageError()) { {*配列に格納する前に、妥当性チェック*}
    return false;
  } 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));
      });
    }
  }

  return true;
}

function dsp_detail(p_pgno) {
  $("#detail .detail").remove();

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

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

  var ret_len = detail_data.length;
  for (var i = 0; i < ret_len; i++) { {*既存データページを表示*}
    if (Number(detail_data[i].pgno) == Number(p_pgno)) {
      el += af217x_detail.appendRow(detail_data[i]);
    }
  }

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

  doHeaderEnable('D');

  var detail = $("#detail .detail");

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

    if($me.find(".chkval").val()=='1') {
      $me.find(".chk").prop("checked",true);
    }

    $me.find("select").each(function(index) {
      var $selectVal = $(this);
      common.setValue($selectVal,common.getValue($me.find(".memo"+$selectVal.attr("name"))));
    });

    set_enabled_main($me,'1'); {*htcls,htpclsによるreadonlyを切り替える*}

  }

  //$("#detail .detail").first().find(".keycd").focus();
}


function doHeaderEnable(pmode) { {*Dialog Dialog以外触れなくする, 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有効*}
    $("#funcMenu").removeClass("noevent");
    h1.removeClass("noevent");
    h2.addClass("noevent");
    d.addClass("noevent");
    $(".Func2").removeClass("noevent");
    $(".Func5").addClass("noevent");
    $(".Func7").addClass("noevent");
    $(".Func8").addClass("noevent");
    $(".Func9").addClass("noevent");
    $(".Func12").removeClass("noevent");

    {*ヘッダーフォーカス*}
    h.find(".keycd")[0].focus();
  } else {
    $("#funcMenu").removeClass("noevent");
    h1.addClass("noevent");
    h2.removeClass("noevent");
    d.removeClass("noevent");
    $(".Func2").addClass("noevent");
    $(".Func5").removeClass("noevent");
    $(".Func7").removeClass("noevent");
    $(".Func8").removeClass("noevent");
    $(".Func9").removeClass("noevent");
    $(".Func12").removeClass("noevent");

  }
}

function clearHeader() {  {*headerクリア*}
  let frm = $("#headerTop");
  let container = frm.closest(".container");
  doHeaderEnable("H");
  common.clearInputData(container);
  {*初期値設定*}
}

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

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

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

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

  dsp_detail(pgno);

  if (common.getValue($("#pagecnt")) == common.getValue($("#lastpage"))) { {*次頁なし*}
    $("#funcMenu").find(".Func8").addClass("noevent");
  } else {
    $("#funcMenu").find(".Func8").removeClass("noevent");
  }
  if (common.getValue($("#pagecnt")) == "1") { {*前頁なし*}
    $("#funcMenu").find(".Func7").addClass("noevent");
  } else {
    $("#funcMenu").find(".Func7").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(frm.find(".pagecnt").val());
  {else if $header.ret == "new"}
    doHeaderEnable("H")
    common.setValue($("#pagecnt"), "");
    common.setValue($("#lastpage"), "");
  {else if $header.ret == "1"}
    dsp_detail("1");
    doHeaderEnable("H");
    alert("該当データがありません。");
    {*頁情報*}
    common.setValue($("#pagecnt"), "");
    common.setValue($("#lastpage"), "");
  {else}
    doHeaderEnable("H")
    {if $hasError eq true}
      alert("{$errorMsg}")
    {/if}
  {/if}
}


</script>

<script>


{*明細行用関数*}
var af217x_detail = {
  appendRow: function (d) {
    let frm = $("#headerTop");
    let mode = common.getValue(frm.find(".mode"));
    var n = stringUtil.nvl;
    var n0 = stringUtil.nvl0;
    var row =
    ' <div class="col wp-100 detail"> ' +
    '<div class="col wp-100 rowinfo detailMain cucdGrp janGrp">' +
      {*1行目*}
    '  <div class="col wp-100 "> ' +
    '    <div class="col wp-055 "> ' +
    '      <div class="item wd-jan inputReadOnly jan     ">' + n(d.jan) + '</div> ' +
    '      <div class="item wd-kbn inputReadOnly gdcls9nm">' + n(d.gdcls9nm) + '</div> ' +
    '      <div class="col" style="width:222px;">&nbsp;</div>' +
    '      <select name="htcls" class="col form-control input-sm wd-140 htcls item clear " style="padding-left:0px;"> '+
    '        {foreach from=$listHtcls item=select name=select} '+
    '          <option value="{$select.cd}" >{$select.nm}</option> '+
    '        {/foreach} '+
    '      </select> '+
    '      <select name="htpcls" class="col form-control input-sm wd-140 htpcls item clear " style="padding-left:0px;"> '+
    '        {foreach from=$listHtpcls item=select name=select} '+
    '          <option value="{$select.cd}" >{$select.nm}</option> '+
    '        {/foreach} '+
    '      </select> '+
    '    </div>' +
    '    <div class="col wp-045 "> ' +
    '      <div class="item wd-060 inputReadOnly number jh02">' + common.addFigure(n(d.jh02)) + '</div> ' +
    '      <div class="item wd-060 inputReadOnly number jh03">' + common.addFigure(n(d.jh03)) + '</div> ' +
    '      <div class="item wd-060 inputReadOnly number jh04">' + common.addFigure(n(d.jh04)) + '</div> ' +
    '      <div class="item wd-060 inputReadOnly number jh05">' + common.addFigure(n(d.jh05)) + '</div> ' +
    '      <div class="item wd-060 inputReadOnly number jh06">' + common.addFigure(n(d.jh06)) + '</div> ' +
    '      <div class="item wd-060 inputReadOnly number jh07">' + common.addFigure(n(d.jh07)) + '</div> ' +
    '      <div class="item wd-060 inputReadOnly number jh08">' + common.addFigure(n(d.jh08)) + '</div> ' +
    '      <div class="item wd-060 inputReadOnly number jh09">' + common.addFigure(n(d.jh09)) + '</div> ' +
    '    </div>' +
    '  </div>' +
      {*1行目*}
    '  <div class="col wp-100 "> ' +
    '    <div class="col wp-055 "> ' +
    '      <div class="item wd-240 inputReadOnly gdjnm  ">' + n(d.gdjnm) + '</div> ' +
    '      <div class="item wd-240 inputReadOnly gdjstnd">' + n(d.gdjstnd) + '</div> ' +
    '      <div class="item wd-S   inputReadOnly number gdcnum">' + n(d.gdcnum) + '</div> ' +
    '      <input name="gdhtun"  type="text" class="form-control input-sm item wd-S gdhtun  number" maxlength="5" value="' + common.addFigure(n(d.gdhtun)) + '"> '+
    '    </div>' +
    '    <div class="col wp-045 "> ' +
    '      <input name="htpnt1"  type="text" class="form-control input-sm item wd-number htpnt1  number" maxlength="7" value="' + common.addFigure(n(d.htpnt1)) + '"> '+
    '      <input name="htpnt2"  type="text" class="form-control input-sm item wd-number htpnt2  number" maxlength="7" value="' + common.addFigure(n(d.htpnt2)) + '"> '+
    '      <input name="fhtpnt1" type="text" class="form-control input-sm item wd-number fhtpnt1 number" maxlength="7" value="' + common.addFigure(n(d.fhtpnt1)) + '"> '+
    '      <input name="fhtpnt2" type="text" class="form-control input-sm item wd-number fhtpnt2 number" maxlength="7" value="' + common.addFigure(n(d.fhtpnt2)) + '"> '+
    '    </div>' +
    '  </div>' +
      {*非表示項目*}
    '  <input name="rnum" type="hidden" class="rnum" value="' + n(d.rnum) + '"/>' +
    '  <input name="" type="hidden" class="memohtcls" value="' + n(d.htcls) + '"/>' +
    '  <input name="" type="hidden" class="memohtpcls" value="' + n(d.htpcls) + '"/>' +
    '<hr>' +
    '</div>' +
    ' </div> ';


    return row;
  },
}

{*-- ここまでjsでのデータ表示用 ---------------------------------------------------*}
  function chkBeforeReg() { 
    let detail = $("#detail .detail");
    let frmh = $("#headerTop");
    let lcnt = 0;

    if(setArrayData($("#pagecnt").val())) { {*現在ページの変更を配列に記憶*}
      do_Reg();
    }
  }

  function do_Reg() {
    if(window.confirm("登録します。\nよろしいですか？")) {
      let frmh = $("#headerTop");
      var chk_array = detail_data;

      {* 以下発行処理 *}
      let headerData = [];
      let f = common.getInputData(frmh);
      headerData.push(encodeJson(f));

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

      common.postData(
          "./doReg.php"
        , sendData
        , function (data) {
          // 特殊処理があれば
          var obj = JSON.parse(data);
          if (Number(obj.ret) >= 0) {
            alert('登録しました。');
            setOneRow();
            clearHeader();
          } else {
            if(!stringUtil.isEmpty(obj.msg)) {
              alert(obj.msg);
            } else {
              alert("登録に失敗しました。");
            }
          }
        }
        , function (error) {
          alert(error.msg);
        }
      );
    }
  }

  {*htcls,htpclsの値によって、htpcls,htpnt1,htpnt2,fhtpnt1,fhtpnt2のreadonolyを切替る*}
  {*readonlyにしても値は初期化しないらしいけど、初期化できるようにもしておく*}
  {*pmode		: i : 0:値を初期化する 1:を初期化しない*}
  function set_enabled_main(detail,pmode) {
    if(pmode == '0') {
      common.setValue(detail.find(".htpnt1"),"");
      common.setValue(detail.find(".htpnt2"),"");
      common.setValue(detail.find(".fhtpnt1"),"");
      common.setValue(detail.find(".fhtpnt2"),"");
    }
      
    var htcls = common.getValue(detail.find(".htcls"));   {*htcls  -> 0:自動計算する,-1:自動計算しない,-2:???*}
    var htpcls = common.getValue(detail.find(".htpcls")); {*htpcls -> 0:変動発注点 1:固定発注点*}

    if(!stringUtil.isEmpty(htcls)) {
      if(htcls == '0' || htcls == '-2') {
        {*自動計算する*}
        common.setComboboxReadonly(detail.find(".htpcls"),false);
        if(htpcls == '0') {
          {*変動発注点*}
          detail.find(".htpnt1").prop("readonly",false);
          detail.find(".htpnt2").prop("readonly",false);
          detail.find(".fhtpnt1").prop("readonly",true);
          detail.find(".fhtpnt2").prop("readonly",true);
        } else {
          {*固定発注点*}
          detail.find(".htpnt1").prop("readonly",true);
          detail.find(".htpnt2").prop("readonly",true);
          detail.find(".fhtpnt1").prop("readonly",false);
          detail.find(".fhtpnt2").prop("readonly",false);
        }
      } else {
        {*自動計算しない*}
        common.setComboboxReadonly(detail.find(".htpcls"),true);
        detail.find(".htpnt1").prop("readonly",true);
        detail.find(".htpnt2").prop("readonly",true);
        detail.find(".fhtpnt1").prop("readonly",true);
        detail.find(".fhtpnt2").prop("readonly",true);
      }
    }

  }

  $(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) {
      chkBeforeReg('9');
    });
    //　F4
    $(document).on("click", ".Func4:not('.noevent')", function(e) {
      openAf212x();
    });
    //　F5 クリア
    $(document).on("click", ".Func5:not('.noevent')", function(e) {
      setOneRow();
      clearHeader();
    });
    //　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) {
      chkBeforeReg();
    });
    //　F10
    $(document).on("click", ".Func10:not('.noevent')", function(e) {
    });
    //　F11
    $(document).on("click", ".Func11:not('.noevent')", function(e) {
    });
    //　F12 メニュー/戻る
    $(document).on("click", ".Func12:not('.noevent')", function(e) {
      $('.btn-close').trigger('click'); {*main画面のF12は画面を閉じる*}
    });

    //画面初期表示時動作

    //MENUボタン===============================
    $(document).on("click", ".btn-search-before", function(e) {
      $(".Func2").addClass("noevent");
      
      var frmh = $("#headerTop");
      var errflg = false;

      if (stringUtil.isEmpty(common.getValue(frmh.find(".mcd")))) {
        errflg = true;
        common.addError( frmh.find(".mcd"), "入力して下さい。", null, true);
      }
      if (stringUtil.isEmpty(common.getValue(frmh.find(".ktktcd")))) {
        errflg = true;
        common.addError( frmh.find(".ktktcd"), "入力して下さい。", null, true);
      }


      if(errflg) {
        alert("エラーがあります");
        $(".Func2").removeClass("noevent");
        return false;
      } else {
        common.dispLoading();
        $("#pagecnt").val("1");
        $(".btn-search").trigger("click");
      }

    });

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


    $(document).on("afterSelectaf217x1", ".vseq", function(e) {
      $(".btn-search-before").trigger("click");
    });


    //====  header  =====
    $(document).on("change", ".vseq", function(e) {
      var frmh = $("#headerTop");

      common.setValue(frmh.find(".cuiseq"),"");
    });

    //====明細行動作======

    $(document).on("change", ".htcls, .htpcls", function(e) {
      {*コンボボックスの値によって、readonlyを切り替える*}
      {*readonyにした値は初期化しないらいしい*}
      var detail = $(this).closest(".detail");
      set_enabled_main(detail,'1');
    });


    $(document).on("focus", "#detailTop .dummy", function(e) {
      if($("#pagecnt").val() == $("#lastpage").val()) {
        $("#topmenu").find(".Func9").focus();
      } else {
        $("#topmenu").find(".Func8").focus();
      }
    });


  });

</script>
