/*===入力共通
@@@===========================================================================================================================================*/
$(document).on("change", "input", function (e) {
  var $me = $(this);

  if( $me.data("initDate") == "1") {
    return true;
  }

  //末尾空白をトリミング↓------------
  if (!$me.hasClass("tpfile")) {
    var w_nm = common.getValue($me);
    w_nm = w_nm.replace(/\s+$/,"");
    common.setValue($me, w_nm);
  }
  //末尾空白をトリミング↑------------

  //22.07.15 先頭空白もトリミング↓------------
  if (!$me.hasClass("tpfile")) {
    var w_nm = common.getValue($me);
    w_nm = w_nm.replace(/^\s+/,"");
    common.setValue($me, w_nm);
  }
  //先頭空白もトリミング↑------------


  if ($me.hasClass("lpad")) {
    stringUtil.lpad($me);
  }
  common.clearError($me);

  // 必須チェック
  if (check.hasRequiredError($me)) {
    return false;
  }
  // 文字数（バイト数）チェック
  if (check.hasOverFlowError($me)) {
    return false;
  }

  $me.trigger("afterChangeInput", "");

});

$(document).on("change", "textarea", function(e) {
  // 文字数（バイト数）チェック
  var $me = $(this);
  if (check.hasOverFlowError($me)) {
    return false;
  }
});

$(document).on("click", "input[type=checkbox]", function () {
  if ($(this).is(':checked')) {
    if (stringUtil.isEmpty($(this).val())) {
      $(this).val("on");
    }

  } else {
    if (stringUtil.isEmpty($(this).val())) {
      $(this).val("off");
    }
  }
});

$(document).on("focus", "input[type='text']", function () {
  $(this).select();
});
$(document).on("click", "input[type='text']", function () {
  $(this).select();
  return false;
});

$(document).on("change", "select", function (e) {
  common.clearError($(this));
});


/*===整形(数値関連)
@@@===========================================================================================================================================*/
$(document).on("focus", ".currency,.number", function (e) {
  $(this).val(common.delFigure($(this).val()));
  $(this).select();
});
$(document).on("change", ".currency,.number", function (e) {
  if (e.bubbles == false) {
    return false;
  }
  if (stringUtil.isEmpty($(this).val())) {
    return true;
  }
  var str = $(this).val();
  if (str.substr( 0, 1 ) == '.') {
    str = '0.' + str;
  }
//  var s = stringUtil.toNumber($(this).val());
  var s = stringUtil.toNumber(str);
  $(this).val(common.addFigure(s, $(this).attr("fixed"), $(this).attr("nocomma")));

  common.clearError($(this));
  if ($(this).hasClass("plusonly")) {
    check.isNumberPlus($(this));
  }

});
$(document).on("blur", ".currency,.number", function (e) {
  var s = stringUtil.toNumber($(this).val());

  // maxlengthチェック
  var $minusflg = $(this).data("minusflg");
  if(!stringUtil.isValid($minusflg)) {
    $minusflg = '0';
  }
  if($minusflg == '1') {
    var hasError = common.checkMinusLength($(this));
  } else {
    var hasError = common.checkLength($(this));
  }

  if (hasError) {
    return false;
  }
  $(this).val(common.addFigure(s, $(this).attr("fixed"), $(this).attr("nocomma")));
});
$(document).on("focus", ".percent", function (e) {
  $(this).val(common.delPercent($(this).val()));
  $(this).select();
});
$(document).on("change", ".percent", function (e) {
  if (e.bubbles == false) {
    return false;
  }
  var s = stringUtil.toNumber($(this).val());
  $(this).val(common.addPercent(s, $(this).attr("fixed")));
});
$(document).on("blur", ".percent", function (e) {
  var s = stringUtil.toNumber($(this).val());
  $(this).val(common.addFigure(s, $(this).attr("fixed")));
});


/*===クリック
@@@===========================================================================================================================================*/
//===条件保持index.php表示
$(document).on("click", ".btn-index", function (ce) {
  var form = $(this).closest(".container").find("form.header");
  var data = $(form).serializeArray();

  setComplianceData("index", data);

  common.postForm("./index.php", data);
});

//===表示ボタンクリック時
$(document).on("click", ".btn-search", function (ce) {
  //  var form = $(this).closest("form");
  var form = $(this).closest(".container").find("form.header");
  /*
    if (check.hasError(form)) {
      alert("エラーがあります");
      return false;
    }

    var retForm = $(form).trigger("beforeSearch");
    if (retForm.data("isErrorBeforeSearch")) {
      alert("エラーがあります");
      return false;
    }
  */
  var data = $(form).serializeArray();

  setComplianceData("search", data);

  common.postForm("./search.php", data);
});

//===該当データ無しの場合にheaderの情報を持ってindex.phpに戻る用
$(document).on("callIndex", ".btn-search", function (ce) {
  //  var form = $(this).closest("form");
  var form = $(this).closest(".container").find("form.header");
  var data = $(form).serializeArray();

  setComplianceData("index", data);

  common.postForm("./index.php", data);
});


// 登録ボタンクリック時
$(document).on("click", ".btn-reg,.btn-exe,.btn-reg-nomsg", function (ce) {
  //header格納
  var header = $("form.header");
  var headerList = header.find('input,select[name]').filter(function (e) {
    if ($(this).attr("type") == "radio") {
      if ($(this).prop("checked")) {
        return true;
      } else {
        return false;
      }
    } else if ($(this).attr("type") == "checkbox") {
      if ($(this).prop("checked")) {
        return true;
      } else {
        return false;
      }
    } else {
      return true;
    }
  });
  var headerData = encodeJson(headerList);

  //footer格納追加　江守
  var footer = $(".footer");
  var footerList = footer.find('input,select[name]').filter(function (e) {
    if ($(this).attr("type") == "radio") {
      if ($(this).prop("checked")) {
        return true;
      } else {
        return false;
      }
    } else if ($(this).attr("type") == "checkbox") {
      if ($(this).prop("checked")) {
        return true;
      } else {
        return false;
      }
    } else {
      return true;
    }
  });
  var footerData = encodeJson(footerList);

  var form = $(this).closest(".container").find("form.body");
  var forms = form.find(".detail");
  console.log('forms', forms);
  // haserrorチェックは各々画面で行う
  /*
    if (check.hasError(header)) {
      alert("エラーがあります");
      return false;
    }

    //commonLine.delEmptyLine(forms);
    for (var i = 0; i < forms.length; i++) {
      detail = forms[i];
      var lineDel = detail.find(".chkLineDel")

      //行削除チェック有はエラーチェックしない
      if(lineDel.prop('checked')){
        if (check.hasError(detail)) {
          alert("エラーがあります");
          return false;
        }
      }
    };
  */

  var isConfirm = true;
  // 登録から来たイベントはメッセージを表示せずにクリア
  /*　fisでは登録時メッセージを出していない。
    if (!ce.isTrigger) {
      isConfirm = confirm("登録します。よろしいですか？");
    }
    if (!isConfirm) {
      return;
    }
  */
  //メッセージを出さない抜け道追加。江守
  //毎回メッセージを出すに変更。江守
  //exeの場合は内容を変える
	if (!$(this).hasClass("noMsgReg")) {
	  if ($(this).hasClass("btn-reg")) {
			if (!$(this).hasClass("noMsgPrompt")) {
			    isConfirm = confirm("登録します。よろしいですか？");
			}
	  } else {
	    isConfirm = confirm("実行します。よろしいですか？");
	  }

	  if (!isConfirm) {
	    return;
	  }
  }


  var sendData = {};
  var formData = [];
  for (var i = 0; i < forms.length; i++) {
    var formList = $(forms[i]).find('input,select[name],textarea').filter(function (e) {
      if ($(this).attr("type") == "radio") {
        if ($(this).prop("checked")) {
          return true;
        } else {
          return false;
        }
      } else if ($(this).attr("type") == "checkbox") {
        if ($(this).prop("checked")) {
          return true;
        } else {
          return false;
        }
      } else {
        return true;
      }
    });
    formData.push(encodeJson(formList));
  }

  sendData["header"] = headerData;
  sendData["footer"] = footerData;
  sendData["data"] = formData;
  //updMode=0:登録モード,1:削除モード
  sendData["updMode"] = "0";

  //  sendData["deleteIseq"] = commonLine.deleteIseq;
  //行削除情報取得(hasClass(.forDeleteData))
  if (forDeleteData != "") {
    sendData["delete"] = forDeleteData;
  }

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

  setComplianceData("reg", sendData);

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

});

// 削除ボタンクリック時
$(document).on("click", ".btn-delete", function (ce) {
  var header = $("form.header");
  var footer = $($(".footer")[0]);
  var headerData = encodeJson(header.find("input[name],select[name]"));
  var footerData = encodeJson(footer.find("input[name],select[name]"));
  var form = $(this).closest(".container").find("form.body");
  var forms = form.find(".detail");
  // console.log('forms', forms);

  var isConfirm = true;
  //メッセージを出さない抜け道追加。江守
  //毎回メッセージを出すに変更。江守
	if (!$(this).hasClass("noMsgDel")) {
	  isConfirm = confirm("削除します。よろしいですか？");
	  if (!isConfirm) {
	    return;
	  }
  }

  var sendData = {};
  var formData = [];
  for (var i = 0; i < forms.length; i++) {
    var formList = $(forms[i]).find('input,select[name],textarea').filter(function (e) {
      if ($(this).attr("type") == "radio") {
        if ($(this).prop("checked")) {
          return true;
        } else {
          return false;
        }
      } else if ($(this).attr("type") == "checkbox") {
        if ($(this).prop("checked")) {
          return true;
        } else {
          return false;
        }
      } else {
        return true;
      }
    });
    formData.push(encodeJson(formList));
  }


  sendData["header"] = headerData;
  sendData["data"] = formData;
  //updMode=0:登録モード,1:削除モード
  sendData["updMode"] = "1";

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

  setComplianceData("delete", sendData);

  common.postData(
    "./update.php"
    , sendData
    , function (data, options) {
      $(me).trigger("delSuccess", [data, options]);
    }
    , function (error, options) {
      alert("削除に失敗しました[" + error.msg + "]");
      $(me).trigger("delError", [error, options]);
    }
  );
});


// 廃止ボタンクリック時
$(document).on("click", ".btn-haishi", function (ce) {
  var btn = $(".headermenu").find(".Func4");
  var gdstp = $(".detailArea").find(".stpdat");

  if (btn.val() == "廃止設定(F4)") {
    gdstp.val(stringUtil.getToday() + " " + stringUtil.getNowTime());
    btn.val("廃止取消(F4)");
  } else {
    gdstp.val("");
    btn.val("廃止設定(F4)");
  }
});

function encodeJson(forms) {
  var returnJson = {};
  for (idx = 0; idx < forms.length; idx++) {
    var item = forms[idx];
    if (item.type == "file") {
      returnJson[forms[idx].name] = $(forms[idx]).attr("filename");
    } else {
      returnJson[forms[idx].name] = forms[idx].value;
    }
  }
  return returnJson;
}
function setComplianceData(action, data) {
  data["COMP"] = "";
  data["TOKEN"] = $("#token").val();
  data["ACTION"] = action;
  data["pid"] = $("body").attr("pid");
  var m = moment(new Date());
  data["d"] = m.format('YYYY-MM-DD-h:mm:ss');
}

// 閉じるボタンクリック時
$(document).on("click", ".btn-close, .btn-close-nomsg", function (ce) {
  var pop = $(this).closest("#popup");
  var sub = $(this).closest(".sub");

  if (pop.length == 1) {
    $(this).trigger("popClose");
  } else if (sub.length == 1) {
    $(sub).hide();
    $("#main .contents").show();
  } else {
    if ($(this).hasClass("btn-close-nomsg")) {
      window.location.href = $("#API_URL").val() + '../product/menu/menu01.php';
//      open('about:blank', '_self').close();
    } else {
      window.location.href = $("#API_URL").val() + '../product/menu/menu01.php';
//      open('about:blank', '_self').close();
    }
  }

});

// クリアボタンクリック時
$(document).on("click", ".btn-clear", function (ce) {
  location.replace("./");
});

// 行挿入
$(document).on("click", ".btn-add", function (ce) {
  $('#lastDetail').focus();
});

// ファイル選択時
$(document).on("change", "input:file", function (ce) {
  if ($(this).val == "") {
    return false;
  }

  var me = $(this);
  var id = common.getUniqueStr();
  var formData = new FormData();
  formData.append("fileId", id);
  formData.append("userfile", $(this).get(0).files[0]);

  // POSTでアップロード
  var url = $("#API_URL").val() + "upload.php?id=" + Math.random();
  $.ajax({
    url: url,
    type: "POST",
    data: formData,
    cache: false,
    contentType: false,
    processData: false,
    dataType: "html"
  })
    .done(function (data, textStatus, jqXHR) {
      if (data == "UPLOAD NG") {
        alert("fail");
      } else {
        $(me).attr("filename", data);
        $(me).trigger("setFileName");
      }
    })
    .fail(function (jqXHR, textStatus, errorThrown) {
      alert("fail");
    });
});

// logoutクリック時
$(document).on("click", "#logout", function (e) {
  var url = common.getApiUrl();

  $.ajax({
    url: url + "/logout.php",
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json',
    timeout: 5000,
  })
    .done(function (res) {
      if (res.status == "OK") {
        window.location.href = "../../login.php";
      } else {
        alert(res.data.msg);
      }
    })
});

/*===フォーカスアウト
@@@===========================================================================================================================================*/


/*===チェックボックス・チェック
@@@===========================================================================================================================================*/
$(document).on()
