/*'**********************************************************************
'【システム名  】
'【プログラムID】InChk.js
'【処 理 概 要 】環境変数

'----------------------------------------------------------------------
'【開 発 日】2003/08/20  【開 発 者 名】福川　雅行
'【改 訂 日】            【改 訂 者 名】
'**********************************************************************/
//共通定数


//メッセージ
var JS_001 = "%S1は、必須項目です。";
var JS_002 = "%S1は、半角%S2文字までしか登録できません。";
var JS_003 = "%S1はカタカナしか登録できません。";
var JS_004 = "入力された%S1が不正です。";
var JS_005 = "入力された%S1に誤りがあります。";
var JS_006 = "%S1に使用できる文字は、A-Z、a-z、0-9のみです。";
var JS_007 = "%S1は、6文字から20文字までで入力ください。";
var JS_008 = "%S1は、半角で0以上の整数しか入力できません。";
var JS_009 = "都道府県が選択されていません。";
var JS_010 = "%S1には、<>文字の登録はできません。";
var JS_011 = "%S1に使用できる文字は、0-9のみです。";
var JS_012 = "%S1と%S2に入力された内容が違います。";
var JS_013 = "%S1は%S2よりも以前の日付を入力して下さい。";
var JS_014 = "%S1には7桁以上の数字、ハイフン、コロン、ピリオド、メールアドレスは入力できません。";
var JS_015 = "%S1は%S2よりも未来の日付を入力して下さい。";
var JS_016 = "%S1は、全角%S2文字（半角%S3文字）までしか登録できません。";
var JS_017 = "今日よりも未来の日付を入力して下さい。";
var JS_018 = "今日よりも過去の日付を入力して下さい。";
var JS_019 = "下限は上限よりも小さい値にしてください：%S1";
var JS_020 = "%S1は、半角で1以上の整数しか入力できません。";
var JS_021 = "%S1に使用できる文字は、0-9、Xのみです。";
var JS_022 = "%S1は半角10文字、または13文字で入力して下さい";
var JS_023 = "削除されているものを選択してください";
var JS_024 = "削除されていないものを選択してください";
var JS_025 = "パスワードは、3文字から20文字までで入力ください。";
var JS_026 = "%S1は、全角%S2文字までしか登録できません。";
// ページ
var PAGE_TOP = "./index.jsp";

//行カウント
function chk_row(obj)
{
	//表示データ１レコード時、
	if (obj.length == undefined) {
		if (obj.checked){
			return true;
		}
	}else{
		for (i = 0; i < obj.length; i++) {
			if (obj[i].checked){
				return true;
			}
		}
	}
	alert("データを選択して下さい。");
	return false;
}

//必須チェック
function chk_hissu(obj,p1){
	if (obj.value == ""){
		alert(JS_001.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	return true;
}

//ラジオボタン入力チェック
function chk_radio(obj,p1)
{
	//表示データ１レコード時、
	if (obj.length == undefined) {
		if (obj.checked){
			return true;
		}
	}else{
		for (i = 0; i < obj.length; i++) {
			if (obj[i].checked){
				return true;
			}
		}
	}
	alert("データを選択して下さい。：" + p1);
	if (obj.length == undefined) {
		obj.focus();
	}else{
		obj[0].focus();
	}
	return false;
}

//文字数チェック
function chk_byte(obj,p1,p2){
	var bytes=0;
	var bytesZenbytesZen=0;
	for(i=0;i< obj.value.length;i++){
		bytes+=((obj.value.charAt(i)>="｡"&&obj.value.charAt(i)<="ﾟ")?1:(escape(obj.value.charAt(i)).length>3?2:1))
	}
	if(bytes > p2 ){
		//alert(p3.replace(/%S2/,p1));
		if(arguments[3] == "1"){
			bytesZen = parseInt(p2,10) / 2;
			alert(JS_016.replace(/%S1/,p1).replace(/%S2/,bytesZen).replace(/%S3/,p2));
		}else{
			alert(JS_002.replace(/%S1/,p1).replace(/%S2/,p2));
		}
		obj.focus();
		return false;
	}
	return true;
}


// ISBN用文字数チェック
function chk_byte_isbn(obj,p1){
	if(obj.value == ""){ return true; }
	if(!(obj.value.length == 10 || obj.value.length == 13)){
		alert(JS_022.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	return true;
}

//文字数チェック
function chk_id(obj,p1,p2){
	if (obj.value.length < p2){
		alert(JS_007.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	return true;
}
// パスワードチェック
function chk_pass(obj) {
	if(obj.value.length > 20 || obj.value.length < 3) {
		alert(JS_025);
		obj.focus();
		return false;
	}
	return true;
}

//メールチェック
function chk_mail(obj,p1){
	var newstr = "";
	var at = false;
	var dot = false;
	var check = true;
	var checkString = obj.value;

	if(obj.value == ""){ return true; }

	if (checkString.indexOf("@") != -1) {
		at = true;
	} else if (checkString.indexOf(".") != -1) {
		dot = true;
	}
	for (var i = 0; i < checkString.length; i++) {
		ch = checkString.substring(i, i + 1)
		if ((ch >= "A" && ch <= "Z") || (ch >= "a" && ch <= "z")
			|| (ch == "@") || (ch == ".") || (ch == "_")
			|| (ch == "-") || (ch >= "0" && ch <= "9")) {
			newstr += ch;
			if (ch == "@") {
				at=true;
			}
			if (ch == ".") {
				dot=true;
			}
		}
		else {
			check=false;
		}
	}
	if ((at == true) && (dot == true) && (check == true)) {
		return true;
	} else {
		alert(JS_005.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	return true;
}

//電話・FAX・携帯チェック
function chk_tel(obj,p1){
	if(obj.value == ""){ return true; }
	//data = obj.value.match(/^[0-9]\d{1,5}-\d{1,5}-\d{1,5}$/);
	data = obj.value.match(/^[0-9]\d{1,5}\d{1,5}\d{1,5}$/);
	if(!data) {
		alert(JS_005.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	return true;
}

//郵便番号チェック
function chk_yubin_old(obj,p1){
	if(obj.value == ""){ return true; }
	data = obj.value.match(/^\d{3}-\d{4}$|^\d{3}-\d{2}$|^\d{3}$/);
	if(!data){
		data = obj.value.replace(/-/g).match(/^\d{3}-\d{4}$|^\d{3}-\d{2}$|^\d{3}$/);
	}
	if(!data) {
		alert(JS_005.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	return true;
}
//郵便番号チェック
function chk_yubin(obj,p1){
	if(obj.value == ""){ return true; }
	data = obj.value.match(/^\d{7}$|^\d{5}$|^\d{3}$/);
/*
	if(!data){
		data = obj.value.replace(/-/g).match(/^\d{3}-\d{4}$|^\d{3}-\d{2}$|^\d{3}$/);
	}
*/
	if(!data) {
		alert(JS_005.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	return true;
}

// 日付チェック
// 第4引数に"1"と入れることで、
// 今日より前の日付で無いかもチェックする

function chk_ymd(objY,objM,objD){
	var years = objY.value;
	var months = objM.value;
	var days = objD.value;
	var flag = true;
	if(years == ""){
		window.alert("年の部分が未入力です。");
		objY.focus();
		return false;
	}
	years = years - 0;
	months = months - 1;
	days = days - 0;
	if (years < 1900) {
		window.alert("年の値が小さすぎます");
		objY.focus();
		return false;
	}
	var dates = new Date(years,months,days);
	if (dates.getYear() < 1900) {
		if (years != dates.getYear() + 1900) { flag = false; }
	} else {
		if (years != dates.getYear()) { flag = false; }
	}
	if (months != dates.getMonth()) { flag = false; }
	if (days != dates.getDate()) { flag = false; }
	if (!flag) {
		window.alert("入力された日付は存在しません");
		objY.focus();
		return false;
	}

	// 第4引数が存在する場合の処理
	if(arguments[3] == "1"){
		// 今日より前でないか
		// 今日の日付取得
		var arrToday = fncDatGetToday();
		var datToday = arrToday.join("");
		// 範囲（今日より前の日付であればエラー）
		// 「対象日 < 今日」 -> エラー
		if(fncDatFromTo(datToday , String(objY.value) + String(objM.value) + String(objD.value)) == -1){
			window.alert(JS_017);
			objY.focus();
			return false;
		}
	}else if(arguments[3] == "2"){
		// 今日より未来でないか
		// 今日の日付取得
		var arrToday = fncDatGetToday();
		var datToday = arrToday.join("");
		// 範囲（今日より未来の日付であればエラー）
		// 「対象日 > 今日」 -> エラー
		if(fncDatFromTo(datToday , String(objY.value) + String(objM.value) + String(objD.value)) == 1){
			window.alert(JS_018);
			objY.focus();
			return false;
		}
	}


	return true;
}

//カタカナ
function chk_kana(obj,p1){
	if(obj.value == ""){ return true; }
  var val = obj.value;
  var RE = /^[ァ-ヶ・ー　]*$/
  if(!RE.test(val)){
    alert(JS_003.replace(/%S1/,p1))
    obj.focus();
    return false;
  }
  return true;
}

//数値チェック
function chk_keta(obj,p1,intKeta){
	if(obj.value == ""){ return true; }
	var intData;
	intData = obj.value;
		for (i=0; i<intData.length; i++){
			c = intData.charAt(i);
			if ("0123456789".indexOf(c,0) < 0){
				alert(JS_008.replace(/%S1/,p1));
				obj.focus();
				return false;
			}
		}
	return true;
}

//半角英数チェック
function chk_eisu(obj,p1){
	if(obj.value == ""){ return true; }
	var intData;
	intData = obj.value;
		for (i=0; i<intData.length; i++){
			c = intData.charAt(i);
			if ("0123456789ABCDEFGHIJKLMNOPQRSRUVWXYZabcdefghijklmnopqrstuvwxyz".indexOf(c,0) < 0){
				alert(JS_006.replace(/%S1/,p1));
				obj.focus();
				return false;
			}
		}
	return true;
}

//ISBNチェック
function chk_isbn(obj,p1){
	if(obj.value == ""){ return true; }
	var intData;
	intData = obj.value;
		for (i=0; i<intData.length; i++){
			c = intData.charAt(i);
			if ("0123456789X".indexOf(c,0) < 0){
				alert(JS_021.replace(/%S1/,p1));
				obj.focus();
				return false;
			}
		}
	return true;
}

//タグチェック
function chk_tag(obj,p1){
	if(obj.value == ""){ return true; }
	data = obj.value.match(/</i);
	data2 = obj.value.match(/>/i);
	if(data) {
		alert(JS_010.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	if(data2) {
		alert(JS_010.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	return true;
}

//コードチェック
function chk_code(strInput,p1){
	if(strInput.value == ""){ return true; }
	strIn = strInput.value;
	if(strIn.match(/[^0-9]/) != null){
		window.alert(JS_011.replace(/%S1/,p1));
		strInput.focus();
		return false;
	}
	return true;
}

// 小数かどうか
function chk_dec(obj,int_keta,dec_keta){
	arrSplited = obj.value.split(".");
	strCaption = "";
	if(typeof(arguments[3]) != "undefined"){ strCaption = arguments[3]; }
	// 整数部

	if(arrSplited[0].match(/^[1-9]+[0-9]*$/) == null && arrSplited[0].match(/^0$/) == null){
		alert("整数部分が不正です");
		obj.focus();
		return false;
	}
	if(arrSplited[0].length > int_keta){
		alert("整数部分の桁数は" + int_keta + "桁です");
		obj.focus();
		return false;
	}else if(arrSplited[0].length <= 0){
		alert("整数部分がありません");
		obj.focus();
		return false;
	}
	// 小数部

	if(typeof(arrSplited[1]) != "undefined"){
		if(arrSplited[1].match(/^[0-9]*$/) == null){
			alert("小数部分が不正です");
			obj.focus();
			return false;
		}
		if(arrSplited[1].length > dec_keta){
			alert("小数部分の桁数は" + dec_keta + "桁です");
			obj.focus();
			return false;
		}else if(arrSplited[1].length <= 0){
			alert("小数部分がありません");
			obj.focus();
			return false;
		}
	}
	return true;
}

// 日付の間隔チェック
// arrStartValとarrEndValの内訳

// 0:年
// 1:月

// 2:日

function chk_datespan(strStartVal , strEndVal , strStartCap , strEndCap , focusobj){
	var arrToday    = fncDatGetToday();
	var datToday    = arrToday.join("");
	// 「開始日 > 終了日」 -> エラー
	if(fncDatFromTo(strStartVal , strEndVal) == -1){
		window.alert(JS_013.replace("%S1",strStartCap).replace("%S2",strEndCap));
		focusobj.focus();
		return false;
	}
	return true;
}

//今日の日付（YYYYMMDD形式）取得
function fncDatGetToday(){
	arrRet = new Array();
	var datDate  = new Date();
	var datYear  = datDate.getYear();
	var datMonth = datDate.getMonth() + 1;
	var datDay   = datDate.getDate();
	if(datYear  < 2000){ datYear += 1900; }
	if(datMonth < 10)  { datMonth = "0" + datMonth; }
	if(datDay   < 10)  { datDay = "0" + datDay; }
	arrRet[0] = datYear;
	arrRet[1] = datMonth;
	arrRet[2] = datDay;
	return arrRet;
}

//日付比較
//1  : datStart < datEnd
//0  : datStart = datEnd
//-1 : datStart > datEnd
function fncDatFromTo(datStart , datEnd){

	//変数宣言
	var intStart = 0;
	var intEnd = 0;
	var intRet = 0;

	//両方とも空白の場合は、以下の処理を通さない
	if(datStart == "" || datEnd == "") return false;
	//両方の日付を数値型に変換
	intStart = Number(datStart.replace(/\//g,""));
	intEnd = Number(datEnd.replace(/\//g,""));
	//比較
	if(intStart < intEnd) intRet = 1;
	else if(intStart == intEnd) intRet = 0;
	else if(intStart > intEnd) intRet = -1;

	//戻る

	return intRet;
}

/* 0埋め */
function fncStrZeroPad(strInput , intKeta , intFlg){
	//変数宣言
	var strZero = "";
	var intCnt = 0;
	for(intCnt = 0; intCnt < intKeta - strInput.length; intCnt++){
		strZero = "0" + strZero;
	}
	if(intFlg == 0) strRet = String(strZero) + String(strInput);
	else strRet = String(strInput) + String(strZero);
	//戻る

	return strRet;
}

// 0はOK
// arguments[2]が1のときは0はNG
function chk_num(obj,p1){
	if(obj.value == ""){ return true; }
	// arguments[2]が1のときは0はNG
	if(obj.value.match(/^[1-9]+\d*$/) == null){
		if(arguments[2] != "1"){
			if(obj.value.match(/^0$/) == null){
				window.alert(JS_008.replace(/%S1/,p1));
				obj.focus();
				return false;
			}
		}else{
			window.alert(JS_020.replace(/%S1/,p1));
			obj.focus();
			return false;
		}
	}
	return true;
}

function chk_two_items(obj1,obj2){
	if((obj1.value == "" && obj2.value == "") || (obj1.value != "" && obj2.value != "")){
		return true;
	}
	return false;
}

function fncOthObjRB(strObjName){

	//変数宣言
	//速度を少しでも上げるため、objObjに参照を渡している。
	var objObj 		= document.all[String(strObjName)];
	var intLimit 	= objObj.length;
	var intCnt 		= 0;
	var strRet 		= "";
	if(objObj.length){
		intLimit = objObj.length;
		//オブジェクトを順にサーチ
		for(intCnt = 0 ; intCnt < intLimit ; intCnt++){
			//チェックされているものがあれば、
			//そのvalueを取得後、ループから抜ける

			if(objObj[intCnt].checked){
				strRet = objObj[intCnt].value;
				break;
			}
		}
	}else{
		strRet = objObj.value;
	}
	//戻る

	return strRet;
}

// 7桁以上の数字、ハイフン、メールアドレス、ピリオドが含まれていないかチェック
// 含まれていればメッセージ出力
function fncChkHonbun(obj,p1){
	if(obj.value == ""){ return true; }
	var strInp = obj.value;
	if(strInp.match(/\d{6}\d.*|-|\.|:|\S+@{1}\S+(\.\S+)+/) != null){
		alert(JS_014.replace(/%S1/,p1));
		obj.focus();
		return false;
	}
	return true;
}

// 変換後のHTML特殊文字を元に戻す
function fncStrHTMLMark(strIn){
	var strOut = String(strIn);
	strOut = strOut.replace(/&amp;/g,"&");
	strOut = strOut.replace(/&quot;/g,"\"");
	strOut = strOut.replace(/&lt;/g,"<");
	strOut = strOut.replace(/&gt;/g,">");
	return strOut;
}

// 指定した名前のフォーム内の一番初めに出てくるオブジェクトに
// フォーカスを移す
// intFlg
// 0:何でも

// 1:text
// 2:button
function fncFocus(strFrmName , intFlg){
	var i = 0;
	var obj;
	// 指定した名前のフォームが無い場合はそのまま抜ける

	if(!document.forms[strFrmName]){ return false; }
	// 指定した名前のフォームのなかで一番最初に出てくるオブジェクトにフォーカスを当てる

	with(document.forms[strFrmName]){
		for(i = 0 ; i < elements.length ; i++){
			if(intFlg == 0){
				elements[i].focus();
				break;
			}else if(intFlg == 1){
				if(elements[i].type == "text"){
					elements[i].focus();
					break;
				}
			}else if(intFlg == 2){
				if(elements[i].type == "button"){
					elements[i].focus();
					break;
				}
			}
		}
	}
	return true;
}
function chk_url(strIn){
	if(strIn.match(/(http|ftp):\/\/.+/) != null){ return false; }
	return false;
}
// 日付
function fncDatChkDate(datInput , intFlg){

	//変数宣言
	var strWork 		= String(datInput);
	var blnFlag 		= true;
	var blnLeapYear 	= false;
	var blnFlagYmd 		= true;
	var blnFlagErr 		= false;
	var arrTxt 			= new Array();		//split後の年月日

	var datCurrent 		= new Date();
	var intYear 		= 0;
	var intMonth 		= 0;
	var intDay 			= 0;

	//分割

	arrTxt = strWork.split("/");
	//arrTxtの配列要素の個数が2または3でないときはエラー
	if(!(arrTxt.length == 2 || arrTxt.length == 3)) return false;

	//intFlgによって「YYYY/MM/DD」か「MM/DD」か「YYYY/MM」
	if(intFlg == 0){
		if(strWork.match(/^\d{4}\/\d{1,2}\/\d{1,2}$/) == null) return false;
		if(isNaN(arrTxt[0]) || isNaN(arrTxt[1]) || isNaN(arrTxt[2])) return false;
		//入力形式が「YYYY/MM/DD」のとき
		intYear  = parseInt(arrTxt[0],10);
		//年の部分が4桁でない場合

		if(arrTxt[0].length != 4) return false;
		intMonth = parseInt(arrTxt[1],10);
		intDay   = parseInt(arrTxt[2],10);
	}else if(intFlg == 1){
		if(strWork.match(/^\d{1,2}\/\d{1,2}$/) == null) return false;
		if(isNaN(arrTxt[0]) || isNaN(arrTxt[1])) return false;
		//入力形式が「MM/DD」のとき
		intYear  = parseInt(datCurrent.getYear(),10);
		intMonth = parseInt(arrTxt[0],10);
		intDay   = parseInt(arrTxt[1],10);
	}else if(intFlg == 2){
		if(strWork.match(/^\d{4}\/\d{1,2}$/) == null) return false;
		if(isNaN(arrTxt[0]) || isNaN(arrTxt[1])) return false;
		//入力形式が「YYYY/MM」のとき
		intYear  = parseInt(arrTxt[0],10);
		//年の部分が4桁でない場合

		if(arrTxt[0].length != 4) return false;
		intMonth = parseInt(arrTxt[1],10);
	}
	//月が1〜12でなければエラー
	if (1 > intMonth || intMonth > 12) return false;

	//ここからは「YYYY/MM/DD」形式チェックと
	//「YYYY/MM」形式チェックのみ
	if(intFlg == 0){
		//閏年かどうか判定

		if (((intYear % 4 == 0) && (intYear % 100 != 0)) || (intYear % 400 == 0)) blnLeapYear = true;
		//日がそれぞれの月の末日以上の数値が入力されていればエラー
		switch(intMonth){
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				if(1 > intDay || intDay > 31) blnFlag = false;
				break;
			case 4:
			case 6:
			case 9:
			case 11:
				if(1 > intDay || intDay > 30) blnFlag = false;
				break;
			case 2:
				if(blnLeapYear){
					if(intMonth == 2 && intDay > 29) blnFlag = false;
				}else{
					if(intMonth == 2 && intDay > 28) blnFlag = false;
				}
				break;
		}
	}

	if(blnFlag == false){ return false; }

	//戻る

	return true;
}

	function fncISBN(){
		with(document.frm_input){
			if (dt_isbn.length){
				for (i=0;i < dt_isbn.length;i++){
					if (dt_isbn[i].value.length > 0){
						do {
							dt_isbn[i].value = dt_isbn[i].value.replace("-","");
						} while (dt_isbn[i].value.indexOf("-") != -1);
					}
				}
			}else{
				if (dt_isbn.value.length > 0){
					do {
						dt_isbn.value = dt_isbn.value.replace("-","");
					} while (dt_isbn.value.indexOf("-") != -1);
				}		
			}
		}
		return true;
	}




//文字数チェック
function chk_moji_cnt(obj,p1,p2){
	if (obj.value.length > p2){
		alert(JS_026.replace(/%S1/,p1).replace(/%S2/,p2));
		obj.focus();
		return false;
	}
	return true;
}

// 全角チェック
	function zenkaku_chk(STR)
	{
		navi = ("あ".length);
		if(navi == "2"){
			if(checkZenkakuNN(STR)==false)
				return false;
			else
				return true;
		}
		if(navi == "1"){
			if(checkZenkakuIE(STR)==false)
				return false;
			else
				return true;
		}
	}

	function checkZenkakuIE(STR)
	{
		var i = new Number();
		for (i = 0; i < STR.length;i++){
			var ch = STR.charAt(i);
		if ((ch >= " " && ch <= "~")||(ch >= "｡" && ch <= "ﾟ"))
			return false;
		}
			return true;
	}

	function checkZenkakuNN(STR)
	{
		var i = new Number();
		for (i=0; i<STR.length;i=i+2){
			var ch = STR.charAt(i);
		if ((ch >= " " && ch <= "~")||(ch >= "｡" && ch <= "ﾟ"))
			return false;
		}
			return true;
	}

// 半角チェック
// 2001/01/26 半角・全角が混在した場合、エラーとする。
	function hankaku_chk(STR)
	{
		for (i = 0; i < STR.length;i++){
     if((zenkaku_chk(STR.charAt(i)))==true) return false;
		}
     return true;
}


