//******************************************************************************************
// ファイル名：wcg_check.js
// 概　　　要：チェック系関数JavaScriptファイル
// 作　成　者：倉林昭和
// 作　成　日：2003/08/30
// 最終更新者：
// 最終更新日：
// All Rights Reserved, Copyright (C) FUJITSU SOCIAL SCIENCE LABORATORY LIMITED 2006
//******************************************************************************************

//******************************************************************************************
// グローバル変数宣言
//******************************************************************************************
var month = new Array(12);
      month[0]=31;month[1]=28;month[2]=31;month[3]=30;month[4]=31;month[5]=30;
      month[6]=31;month[7]=31;month[8]=30;month[9]=31;month[10]=30;month[11]=31;




//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_GetLength
// 概　要：入力のバイト数をカウントする。
//	サーバにデータを送らなくとも、バイト数チェックが可能
// 引　数：moji チェックする文字列
// 戻り値：mojiのバイト数
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_GetLength(moji)
{
    var i, cnt = 0, ltr;
    var kana = 'ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾜｦﾝｧｨｩｪｫｯｬｭｮ､｡｢｣ﾟﾞ';

    for (i=0; i<moji.length; i++) {
	ltr = moji.charAt(i);
        if ((escape(ltr).length >= 4) && (kana.indexOf(ltr,0)==-1)) 
	{
		cnt+=2;
	} else {
		cnt++;
	}
    }
    return cnt;
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputPassCheck
// 概　要：入力内容をチェックする(未入力)
// 引　数：obj チェックするオブジェクト部品
// 戻り値：0 or -1
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputPassCheck(obj)
{
	var CheckText = "";
	CheckText = obj.value;
	
	if(CheckText.length == 0)
	{
		obj.focus();
		CM_SetButtonLockFlg(false);
		return -1;
	}
	else
	{
		return 0;
	}
}



//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputTextCheck
// 概　要：入力内容をチェックする(未入力)
// 引　数：obj チェックするオブジェクト部品
// 　　　　flg focus設定(1-focusを設定する)
// 戻り値：0 or -1
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputTextCheck(obj,flg)
{
	var CheckText = "";
	CheckText = obj.value;
	if( arguments.length == 1) flg = 1;

	if (CheckText == ""){
		CM_SetButtonLockFlg(false);
		if ((obj.type=="text" || obj.type=="textarea") && flg == 1){
			obj.focus();
		}
		return -1;
	}
	var Text1 = CheckText.replace(/[\n\r]/g,"");
	var Text2 = Text1.replace(/ /g,"");
	var Text3 = Text2.replace(/　/g,"");
	//空白、改行のみはフィールド値を空で返す
	if (Text3 == ""){
		obj.value = "";
		CM_SetButtonLockFlg(false);
		if ((obj.type=="text" || obj.type=="textarea") && flg == 1) obj.focus();
		return -1;
	}
	//後ろの空白を削除処理
	var num = CheckText.length;
	var strPos = num-1;
	var txt1 = CheckText.substr(strPos,1);
	if ((txt1==" ")||(txt1=="　")){
		//空白数を調べる
		for (j=num-1;j>=0;j--){
			strPos = strPos - 1;
			var txt2 = CheckText.substr(strPos,1);
			//空白を削除
			if ((txt2 != " ")&&(txt2 != "　")){
				obj.value = CheckText.substr(0,strPos+1);
				return 0;
			}
		}
	} else {
		return 0;
	}
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputTexthalfCheck
// 概　要：入力内容をチェックする(半角英数字)
// 引　数：obj  チェックするオブジェクト部品
// 戻り値：0 or -1
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputTexthalfCheck(obj)
{
	var chkFlg = 0;
	var checkBuf = "";
	var str = obj.value;
	for(i=0; i<str.length; i++){
		checkBuf = str.charCodeAt(i);	//1文字抜き出す
		//数字
		if ((checkBuf >= 0x30) && (checkBuf <= 0x39)){
			chkFlg = 1;
		//英大文字
		} else if ((checkBuf >= 0x41) && (checkBuf <= 0x5a)){
			chkFlg = 2;
		//英子文字
		} else if ((checkBuf >= 0x61) && (checkBuf <= 0x7a)){
			chkFlg = 3;
		//その他
		} else {
			chkFlg = -1;
			break;
		}
	}
	if (chkFlg != -1){
		return 0;
	} else {
		CM_SetButtonLockFlg(false);
		if (obj.type=="text") obj.focus();
		return -1;
	}
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputPasswdCheck
// 概　要：入力内容をチェックする(パスワード)
// 引　数：obj  チェックするオブジェクト部品
// 戻り値：0 or -1
//【使用可能文字】!#$%&()-=^~|@[]:;+*/?_.,0123456789
//　　　　　　　　ABCDEFGHIJKLMNOPQRSTUVWXYZ
//　　　　　　　　abcdefghijklmnopqrstuvwxyz
//【使用不可文字】'"`<>\{}
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputPasswdCheck(obj)
{
	var chkFlg = 0;
	var checkBuf = "";
	var str = obj.value;
	for(i=0; i<str.length; i++){
		checkBuf = str.charCodeAt(i);	//1文字抜き出す
		//!
		if (checkBuf == 0x21){
			chkFlg = 1;
		//#〜&
		} else if ((checkBuf >= 0x23) && (checkBuf <= 0x26)){
			chkFlg = 1;
		//(〜;
		} else if ((checkBuf >= 0x28) && (checkBuf <= 0x3b)){
			chkFlg = 1;
		//=
		} else if (checkBuf == 0x3d){
			chkFlg = 1;
		//?〜[
		} else if ((checkBuf >= 0x3f) && (checkBuf <= 0x5b)){
			chkFlg = 1;
		//]〜_
		} else if ((checkBuf >= 0x5d) && (checkBuf <= 0x5f)){
			chkFlg = 1;
		//a〜z
		} else if ((checkBuf >= 0x61) && (checkBuf <= 0x7a)){
			chkFlg = 1;
		//|
		} else if (checkBuf == 0x7c){
			chkFlg = 1;
		//(〜;
		} else if (checkBuf == 0x7e){
			chkFlg = 1;
		//その他
		} else {
			chkFlg = -1;
			break;
		}
	}
	if (chkFlg != -1){
		return 0;
	} else {
		CM_SetButtonLockFlg(false);
		if (obj.type=="text") obj.focus();
		return -1;
	}
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputTypeCheck
// 概　要：特定入力内容をチェックする(メールアドレス/半角数字)
// 引　数：obj  チェックするオブジェクト部品
// 　　　　type チェック分類(1-メールアドレス　2-半角数字　3-URL)
// 戻り値：0 or -1
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputTypeCheck(obj,type)
{
	var CheckText = obj.value;
	//メールアドレス
	if (type == 1){
        /*
		var check = /.+@.+\..+/;
		if (!CheckText.match(check)){
			CM_SetButtonLockFlg(false);
			if (obj.type=="text") obj.focus();
			return -1;
		}
		var checkBuf = "";
		var chkFlg = 0;
		//メールアドレスの文字をチェックする
		for(i=0; i<CheckText.length; i++){
			checkBuf = CheckText.charCodeAt(i);	//1文字抜き出す
			if ((checkBuf >= 0x21) && (checkBuf <= 0x7e)){
				chkFlg = 1;
			} else {
				chkFlg = -1;
				break;
			}
		}
		if (chkFlg == -1){
				CM_SetButtonLockFlg(false);
				if (obj.type=="text") obj.focus();
				return -1;
		}
		*/
		
		//メールアドレスチェック内容
		//@がない場合 
		//.で始まるユーザ名・ドメイン名 
		//.で終わるユーザ名・ドメイン名 
		//ドメインに.が無い場合 
		//ユーザ名の文字数が1文字未満の場合 
		//.を含んだドメイン名の文字数が3文字未満の場合 
		//ユーザ名に含まれる文字に . _ - 以外の記号が入っている場合 
		//ドメイン名に含まれる文字に . - 以外の記号が入っている場合 

		var emailPat   = /^(.+)@(.+)$/;
		var userPat	= /^[a-zA-Z0-9\._-]+$/;
		var domainPat  = /^[a-zA-Z0-9\.-]+$/;
		var invalid0   = /^(.+)\.(.+)\.(.+)$/;
		var invalid1   = /^\.(.+)/;
		var invalid2   = /(.+)\.$/;
		var invalid3   = /\.\./;
		var eMailArray = CheckText.match(emailPat);

		if (eMailArray == null || eMailArray.length <= 1) {
			  CM_SetButtonLockFlg(false);
			  return -1;
		}

		var user	= eMailArray[1];
		var dom		= eMailArray[2];

		if (user.match(userPat) == null
			|| user.indexOf('.') == 0
			|| user.length < 1)
//			|| user.match(invalid0) != null
//			|| user.match(invalid1) != null
//			|| user.match(invalid2) != null
//			|| user.match(invalid3) != null)
		  {
			  CM_SetButtonLockFlg(false);
			  return -1;
		  }

		if (dom.match(domainPat) == null
			|| dom.indexOf('.') == -1
			|| dom.length < 3
			|| dom.match(invalid1) != null
			|| dom.match(invalid2) != null
			|| dom.match(invalid3) != null)
		  {
			  CM_SetButtonLockFlg(false);
			  return -1;
		  }

	//数値
	} else if (type == 2){
		//数値チェック(空白が入力されていても数値と認識される)
		if(isNaN(CheckText)){
			CM_SetButtonLockFlg(false);
			if (obj.type=="text") obj.focus();
			return -1;
		}
		//空白が入力されている場合
		if(-1 != CheckText.search(" ") || -1 != CheckText.search("　")){
			CM_SetButtonLockFlg(false);
			if (obj.type=="text") obj.focus();
			return -1;
		}
	//URL
	} else if (type == 3){
		data = CheckText.match(/(http|ftp):\/\/.+/);
		if (!data) {
			CM_SetButtonLockFlg(false);
			if (obj.type=="text") obj.focus();
			return -1;
		}
	}
	return 0;
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputFilenameCheck
// 概　要：入力内容をチェックする(ファイル名)
// 引　数：obj  チェックするオブジェクト部品
// 戻り値：0 or -1 0:OK、-1：NG
//【使用不可文字】\/:,;*?"<>|
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputFilenameCheck(obj)
{
	var chkFlg = 0;
	var checkBuf = "";
	var str = obj.value;
	for(i=0; i<str.length; i++){
		checkBuf = str.charCodeAt(i);	//1文字抜き出す
		// \
		if (checkBuf == 0x5c){
			chkFlg = -1;
			break;
		// /
		}else if (checkBuf == 0x2f){
			chkFlg = -1;
			break;
		// :
		}else if (checkBuf == 0x3a){
			chkFlg = -1;
			break;
		// ,
		}else if (checkBuf == 0x2c){
			chkFlg = -1;
			break;
		// ;
		}else if (checkBuf == 0x3b){
			chkFlg = -1;
			break;
		// *
		}else if (checkBuf == 0x2a){
			chkFlg = -1;
			break;
		// ?
		}else if (checkBuf == 0x3f){
			chkFlg = -1;
			break;
		// "
		}else if (checkBuf == 0x22){
			chkFlg = -1;
			break;
		// <
		}else if (checkBuf == 0x3c){
			chkFlg = -1;
			break;
		// >
		}else if (checkBuf == 0x3e){
			chkFlg = -1;
			break;
		// |
		}else if (checkBuf == 0x7c){
			chkFlg = -1;
			break;
		}
	}
	if (chkFlg != -1){
		return 0;
	} else {
		CM_SetButtonLockFlg(false);
		if (obj.type=="text") obj.focus();
		return -1;
	}
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputDateCheck
// 概　要：日付形式をチェックする
// 引　数：date 日付文字列
//		 type チェック分類
//　　　　　　(1-YYYY　2-YYYY/MM/DD　3-YYYY/MM/DD/hh:nn(テストデータ用)
//								 　4-YYYY/MM/DD/hh:nn:ss)(テストデータ用)
// 戻り値：0 or -1(形式がNG) or -2(日付範囲がNG)
//　※関数呼び元で、ボタンロック解除CM_SetButtonLockFlg(false)を行う必要がある。
//　~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputDateCheck(date,type)
{
	if (type == 1){
		if (isNaN(date)) return -1;
		if (date.length != 4) return -1;
		if (date<0000 || date>9999) return -1;
	} else if (type == 2){
		if (date.length != 10) return -1;
		parseDate = date.split("/");
		if (parseDate.length != 3) return -1;
		var yy = parseDate[0];
		var mm = parseDate[1];
		var dd = parseDate[2];
		//数値チェック
		if (isNaN(yy)) return -1;
		if (isNaN(mm)) return -1;
		if (isNaN(dd)) return -1;
		//桁数チェック
		if (yy.length != 4) return -1;
		if (mm.length != 2) return -1;
		if (dd.length != 2) return -1;
		//範囲チェック
		if (yy<0000 || yy>9999) return -1;
		if (mm<1 || mm>12) return -1;
		//閏年 2月を29日にする
		if ((yy%4)==0 && (yy%100)!=0 || (yy%400)==0)
   			month[1] = 29;
		if (dd<1 || dd>month[mm-1]) return -2;
	} else if (type == 3){
		if (date.length != 16) return -1;
		parseDate = date.split("/");
		if (parseDate.length != 4) return -1;
		var yy = parseDate[0];
		var mm = parseDate[1];
		var dd = parseDate[2];
		var tt = parseDate[3];
		//数値チェック
		if (isNaN(yy)) return -1;
		if (isNaN(mm)) return -1;
		if (isNaN(dd)) return -1;
		//桁数チェック
		if (yy.length != 4) return -1;
		if (mm.length != 2) return -1;
		if (dd.length != 2) return -1;
		if (tt.length != 5) return -1;
		//時間を配列に
		parseTimeDate = tt.split(":");
		if (parseTimeDate.length != 2) return -1;
		var hh = parseTimeDate[0];
		var nn = parseTimeDate[1];
		//数値チェック
		if (isNaN(hh)) return -1;
		if (isNaN(nn)) return -1;
		//桁数チェック
		if (hh.length != 2) return -1;
		if (nn.length != 2) return -1;
		//範囲チェック
//		if (yy<1900 || yy>9999) return -1;
//		if (mm<1 || mm>12) return -1;
//		//年が0000年だったら閏年チェックをしない(メイン用)
//		if (yy != 0){
//			//閏年 2月を29日にする
//			if ((yy%4)==0 && (yy%100)!=0 || (yy%400)==0)
// 				month[1] = 29;
//		}
//		if (dd<1 || dd>month[mm-1]) return -2;
//		if (hh<0 || hh>23) return -1;
//		if (nn<0 || nn>59) return -1;
	} else if (type == 4){
		if (date.length != 19) return -1;
		parseDate = date.split("/");
		if (parseDate.length != 4) return -1;
		var yy = parseDate[0];
		var mm = parseDate[1];
		var dd = parseDate[2];
		var tt = parseDate[3];
		//数値チェック
		if (isNaN(yy)) return -1;
		if (isNaN(mm)) return -1;
		if (isNaN(dd)) return -1;
		if (yy.length != 4) return -1;
		if (mm.length != 2) return -1;
		if (dd.length != 2) return -1;
		if (tt.length != 8) return -1;
		//時間を配列に
		parseTimeDate = tt.split(":");
		if (parseTimeDate.length != 3) return -1;
		var hh = parseTimeDate[0];
		var nn = parseTimeDate[1];
		var ss = parseTimeDate[2];
		//数値チェック
		if (isNaN(hh)) return -1;
		if (isNaN(nn)) return -1;
		if (isNaN(ss)) return -1;
		if (hh.length != 2) return -1;
		if (nn.length != 2) return -1;
		if (ss.length != 2) return -1;
		//範囲チェック
//		if (yy<1900 || yy>9999) return -1;
//		if (mm<1 || mm>12) return -1;
		//年が0000年だったら閏年チェックをしない(メイン用)
//		if (yy != 0){
//			//閏年 2月を29日にする
//			if ((yy%4)==0 && (yy%100)!=0 || (yy%400)==0)
//				month[1] = 29;
//		}
//		if (dd<1 || dd>month[mm-1]) return -2;
//		if (hh<0 || hh>23) return -1;
//		if (nn<0 || nn>59) return -1;
//		if (ss<0 || ss>59) return -1;
	}
	return 0;
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputDateCompCheck
// 概　要：日付の開始と終了の前後チェック
// 引　数：stdate 開始年月日入力部品名
// 　　　　sthh 開始時入力部品名(プルダウン)
// 　　　　stmm 開始分入力部品名(プルダウン)
// 　　　　eddate 終了年月日入力部品名
// 　　　　edhh 終了時入力部品名(プルダウン)
// 　　　　edmm 終了分入力部品名(プルダウン)
// 戻り値：0 or -1
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputDateCompCheck(stdate,sthh,stmm,eddate,edhh,edmm)
{
	var tmp_stdate = document.forms[0].elements[stdate].value;
	var tmp_sthh = document.forms[0].elements[sthh].options[document.forms[0].elements[sthh].selectedIndex].value;
	var tmp_stmm = document.forms[0].elements[stmm].options[document.forms[0].elements[stmm].selectedIndex].value;
	var tmp_eddate = document.forms[0].elements[eddate].value;
	var tmp_edhh = document.forms[0].elements[edhh].options[document.forms[0].elements[edhh].selectedIndex].value;
	var tmp_edmm = document.forms[0].elements[edmm].options[document.forms[0].elements[edmm].selectedIndex].value;

	//日付が片方だけなら比較する必要がない
	if ((tmp_stdate=="") || (tmp_eddate=="")) return 0;
	if (tmp_stdate>tmp_eddate){
		CM_SetButtonLockFlg(false);
		return -1;
	}
	//時間の値が空の場合は0をセット
	if (tmp_sthh == "") tmp_sthh=0;
	if (tmp_edhh == "") tmp_edhh=0;
	if ((tmp_stdate==tmp_eddate)&&(tmp_sthh>tmp_edhh)){
		CM_SetButtonLockFlg(false);
		return -1;
	}
	//分の値が空の場合は0をセット
	if (tmp_stmm == "") tmp_stmm=0;
	if (tmp_edmm == "") tmp_edmm=0;
	if ((tmp_stdate==tmp_eddate)&&(tmp_sthh==tmp_edhh)&&(tmp_stmm>tmp_edmm)){
		CM_SetButtonLockFlg(false);
		return -1;
	}
	return 0;
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_MainInputDateCompCheck(メイン用)
// 概　要：日付の開始と終了の前後チェック
// 引　数：styy 開始年入力部品名
// 　　　　stmm 開始月入力部品名(プルダウン)
// 　　　　stdd 開始日入力部品名(プルダウン)
// 　　　　sthh 開始時入力部品名(プルダウン)
// 　　　　stnn 開始分入力部品名(プルダウン)
// 　　　　edyy 終了年入力部品名
// 　　　　edmm 終了月入力部品名(プルダウン)
// 　　　　eddd 終了日入力部品名(プルダウン)
// 　　　　edhh 終了時入力部品名(プルダウン)
// 　　　　ednn 終了分入力部品名(プルダウン)
// 戻り値：0 or -1
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_MainInputDateCompCheck(styy,stmm,stdd,sthh,stnn,edyy,edmm,eddd,edhh,ednn)
{
	var tmp_styy = document.forms[0].elements[styy].value;
	var tmp_stmm = document.forms[0].elements[stmm].options[document.forms[0].elements[stmm].selectedIndex].value;
	var tmp_stdd = document.forms[0].elements[stdd].options[document.forms[0].elements[stdd].selectedIndex].value;
	var tmp_sthh = document.forms[0].elements[sthh].options[document.forms[0].elements[sthh].selectedIndex].value;
	var tmp_stnn = document.forms[0].elements[stnn].options[document.forms[0].elements[stnn].selectedIndex].value;
	var tmp_edyy = document.forms[0].elements[edyy].value;
	var tmp_edmm = document.forms[0].elements[edmm].options[document.forms[0].elements[edmm].selectedIndex].value;
	var tmp_eddd = document.forms[0].elements[eddd].options[document.forms[0].elements[eddd].selectedIndex].value;
	var tmp_edhh = document.forms[0].elements[edhh].options[document.forms[0].elements[edhh].selectedIndex].value;
	var tmp_ednn = document.forms[0].elements[ednn].options[document.forms[0].elements[ednn].selectedIndex].value;

	//年が片方だけなら比較する必要がない
	if ((tmp_styy=="") || (tmp_edyy=="")) return 0;
	if (tmp_styy>tmp_edyy){
		CM_SetButtonLockFlg(false);
		return -1;
	}
	//月の値が空の場合は0をセット
	if (tmp_stmm == "") tmp_stmm=0;
	if (tmp_edmm == "") tmp_edmm=0;
	if ((tmp_styy==tmp_edyy)&&(tmp_stmm>tmp_edmm)){
		CM_SetButtonLockFlg(false);
		return -1;
	}
	//日の値が空の場合は0をセット
	if (tmp_stdd == "") tmp_stdd=0;
	if (tmp_eddd == "") tmp_eddd=0;
	if ((tmp_styy==tmp_edyy)&&(tmp_stmm==tmp_edmm)&&(tmp_stdd>tmp_eddd)){
		CM_SetButtonLockFlg(false);
		return -1;
	}
	//時間の値が空の場合は0をセット
	if (tmp_sthh == "") tmp_sthh=0;
	if (tmp_edhh == "") tmp_edhh=0;
	if ((tmp_styy==tmp_edyy)&&(tmp_stmm==tmp_edmm)&&(tmp_stdd==tmp_eddd)&&(tmp_sthh>tmp_edhh)){
		CM_SetButtonLockFlg(false);
		return -1;
	}
	//分の値が空の場合は0をセット
	if (tmp_stnn == "") tmp_stnn=0;
	if (tmp_ednn == "") tmp_ednn=0;
	if ((tmp_styy==tmp_edyy)&&(tmp_stmm==tmp_edmm)&&(tmp_stdd==tmp_eddd)&&(tmp_sthh==tmp_edhh)&&(tmp_stnn>tmp_ednn)){
		CM_SetButtonLockFlg(false);
		return -1;
	}
	return 0;
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputSrchDateCheck
// 概　要：検索条件の日付入力内容をチェックする
// 引　数：date 月日入力部品名
// 　　　　hh 時入力部品名(プルダウン)
// 　　　　mm 分入力部品名(プルダウン)
// 　　　　
// 戻り値：0 or -1(日付入力なし) -2(時間指定なし)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputSrchDateCheck(date,hh,mm)
{
	var tmp_date = document.forms[0].elements[date].value;
	var tmp_hh = document.forms[0].elements[hh].options[document.forms[0].elements[hh].selectedIndex].value;
	var tmp_mm = document.forms[0].elements[mm].options[document.forms[0].elements[mm].selectedIndex].value;
	//日付が未入力で時が入力されている場合NG
	if ((tmp_date == "")&&(tmp_hh != "")){
		CM_SetButtonLockFlg(false);
		return -1;
	//日付が未入力で分が入力されている場合NG
	} else if ((tmp_date == "")&&(tmp_mm != "")){
		CM_SetButtonLockFlg(false);
		return -1;
	//時が未入力で分が入力されている場合NG
	} else if ((tmp_hh == "")&&(tmp_mm != "")){
		CM_SetButtonLockFlg(false);
		return -2;
	}
	return 0;
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_ExtensionCheck
// 概　要：ファイルの拡張子を確認する
// 引　数：str (チェックする文字列)
//　　　 　type (拡張子のタイプ　1-htm,html 2-csv)
// 戻り値：なし
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_ExtensionCheck(str,type)
{
	if (type == 1){
		if (str.indexOf(".htm",0) != -1) return 0;
		if (str.indexOf(".html",0) != -1) return 0;
		if (str.indexOf(".HTM",0) != -1) return 0;
		if (str.indexOf(".HTML",0) != -1) return 0;
		CM_SetButtonLockFlg(false);
		return -1;
	} else if (type == 2){
		if (str.indexOf(".csv",0) != -1) return 0;
		if (str.indexOf(".CSV",0) != -1) return 0;
		CM_SetButtonLockFlg(false);
		return -1;
	}
	return 0;
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_ChkTmStr
// 概　要：時刻の書式をチェックする。24時間制、０埋めの書式
// 引　数：tmstr チェックする文字列
// 戻り値：true：正常　 false：異常
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_ChkTmStr(tmstr)
{
	var rslt = tmstr.match(/^([01][0-9]|2[0-3]):[0-5][0-9]$/);
	if (!rslt || !tmstr) return false;
	return true;
}

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_TimeFormatCheck
// 概　要：時分秒の書式をチェックする。24時間制、０埋めの書式
// 引　数：tmstr チェックする文字列
// 戻り値：true：正常　 false：異常
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_TimeFormatCheck(tmstr)
{
	var rslt = tmstr.match(/^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/);
	if (!rslt || !tmstr) return false;
	return true;
}

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputTelCheck
// 概　要：入力内容をチェックする(電話番号)
// 引　数：obj  チェックするオブジェクト部品
// 戻り値：0 or -1
//【使用可能文字】-0123456789
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputTelCheck(obj)
{
	var chkFlg = 0;
	var checkBuf = "";
	var str = obj.value;
	for(i=0; i<str.length; i++){
		checkBuf = str.charCodeAt(i);	//1文字抜き出す
		//-
		if (checkBuf == 0x2d){
			chkFlg = 1;
		//0〜9
		} else if ((checkBuf >= 0x30) && (checkBuf <= 0x39)){
			chkFlg = 1;
		//その他
		} else {
			chkFlg = -1;
			break;
		}
	}
	if (chkFlg != -1){
		return 0;
	} else {
		CM_SetButtonLockFlg(false);
		if (obj.type=="text") obj.focus();
		return -1;
	}
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//２バイト文字チェック（1バイト文字または半角カナを見つけると-１を返す）
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_twobytesletterchk(moji)
{
	var ltr, i;
	var kana = 'ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾜｦﾝｧｨｩｪｫｬｭｮ､｡｢｣ﾟﾞ';

	for (i=0; i<moji.length; i++) {
		ltr = moji.charAt(i);
		if ((escape(ltr).length < 4 ) || (kana.indexOf(ltr,0)>=0)) return -1;
	}
	return 0;
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_ForbiddenLetterCheck
// 概　要：入力内容に機種依存文字が入っていないかチェック
// 引　数：obj  チェックするオブジェクト部品
// 戻り値：正常：0　 異常：チェックに引っかかった文字
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_ForbiddenLetterCheck(obj)
{
  //機種依存文字
  var str = /[ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾜｦﾝｧｨｩｪｫｬｭｮ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]@ABCDEFGHI≡∫島煤縺ﾛ∠凵諱ｿ∪_`abcdefghijklmnopqrstu∞ｇョх援括窮欠合紫順~¬UVWh\]^_`abcdefgijklmnopqrstuvwxyz{|}~淫戒期釧厚匙囚嘱穿凧諦日琵放愈簾傅哄奧廈戌曉檄滯｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ瓏磅糶脣蕣褝踰鋺顫鴾@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~胤拐棋屑口冊収埴箭蛸蹄乳眉方油練傴哈奬廐戔暾檢漲｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ瓔磊糺脯蕘襠踴鍄顯鵆@ABCDEFGHIJKN]/g;

  var chk;
  chk = obj.match(str);

  if(chk!=null){
	return chk;
  }else{
	return 0;
  }
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_ExtCheck
// 概　要：ファイル名の拡張子が正しいかチェック
// 引　数：fname  チェックするファイル名
// 戻り値：正常:0 ファイル名長さ異常:-1 拡張子異常:-2
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_ExtCheck(_fullpath)
{
	if( _fullpath != '' ){

		//フルパスの\\を/に置換
		_fullpath = _fullpath.replace( /\\/g, "/" );
//		alert("_fullpath=" + _fullpath);

		//フルパスを/で分割
		path_array = _fullpath.split("/");
		for (i=0; i<path_array.length; i++) {
			fname_all = path_array[i];
//			alert("fname_all=" + fname_all);
		}
		
		//拡張子のピリオドを検索
		last_priod = fname_all.lastIndexOf(".");
//		alert("last_priod=" + last_priod);

		//拡張子が存在しない場合
		if (last_priod == -1) return -2;

		//ファイル名を取得
		fname = fname_all.substring(0, last_priod);
//		alert("fname=" + fname);

		//ファイル名の長さが100バイトより大きいの場合
		if (fname.length > 100) return -1;

		//拡張子を取得
		extension = fname = fname_all.substring(last_priod+1, fname_all.length);
//		alert("extension=" + extension);
		
		//拡張子の長さが10バイト以上の場合
		if (extension.length >= 10) return -2;
	}
	//正常終了
	return 0;
}


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 関数名：CH_InputDeptnameCheck
// 概　要：入力内容をチェックする(課名、職員名)
// 引　数：obj  チェックするオブジェクト部品
// 戻り値：0 or -1 0:OK、-1：NG
//【使用不可文字】\"'
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function CH_InputDeptnameCheck(obj)
{
	var chkFlg = 0;
	var checkBuf = "";
	var str = obj.value;
	for(i=0; i<str.length; i++){
		checkBuf = str.charCodeAt(i);	//1文字抜き出す
		// \
		if (checkBuf == 0x5c){
			chkFlg = -1;
			break;
		// "
		}else if (checkBuf == 0x22){
			chkFlg = -1;
			break;
		// '
		}else if (checkBuf == 0x27){
			chkFlg = -1;
			break;
		}
	}
	if (chkFlg != -1){
		return 0;
	} else {
		CM_SetButtonLockFlg(false);
		if (obj.type=="text") obj.focus();
		return -1;
	}
}