/***********************************************************************
【システム名  】Workflow
【プログラムID】InChk.js
【処 理 概 要 】入力チェック関係の関数
【関数名一覧】		【概要】
 Chk_Hissu			必須入力チェック
 Chk_Byte			バイト数チェック
 Chk_Mail			MAILアドレスチェック
 Chk_Tel			電話番号チェック
 Chk_Fax			FAX番号チェック
 Chk_yubin			郵便番号チェック
 Chk_hankaku		半角チェック
 Chk_hankakuKana	半角カナチェック
 Chk_hankakuKana2	半角カナチェック
 Chk_zenkaku		全角チェック
 Chk_hankakuNum		半角数字チェック
 Chk_hankakuEiji	半角英数字チェック
 Chk_errorWord		禁則文字チェック
 Chk_tisaikana		ｧ-ｯ-　->　ｱ-ﾂ
 Chk_hankakuEiji2	半角英字チェック
 Chk_ByteNum		バイト数を調べる
 Chk_Url			URLチェック
 Chk_File			type=fileのチェック
**********************************************************************/


/*'**********************************************************************
'【関 数 名 】 Chk_Hissu
'【概 要    】 必須入力チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_Hissu(obj)
{
	if (obj == ""){
		return false;
	}
	return true;
}

/*'*********************************************************************
'【関 数 名 】 Chk_Byte
'【概 要    】 バイト数チェック
'【引 数 名 】 obj, strB
'【データ型 】 String,  string
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_Byte(obj,strB)
{
	var i;
	var j;
	var strValue;
	var strLetter;
	var count;

	count = 0;
	
	for (j = 0 ; j < obj.length; j++) {
		strLetter = escape(obj.charAt(j));
		if(strLetter.length < 4) count ++; else count += 2;
	}

	if(count > parseInt(strB,10)) {
		return false;
	}
	return true;
}

/*'*********************************************************************
'【関 数 名 】 Chk_Mail
'【概 要    】 MAILアドレスチェック
'【引 数 名 】 obj, strName
'【データ型 】 String,  string
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_Mail(obj)
{
	var newstr = "";
	var ch;
	var flg_at = false;
	var flg_dot = false;
	
	if (obj.indexOf("@") != -1) {
		flg_at = true;
	} else if (obj.indexOf(".") != -1) {
		flg_dot = true;
	}
	
	for (var i = 0; i < obj.length; i++) {
		ch = obj.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 == "@") flg_at=true;
			if (ch == ".") flg_dot=true;
		}
	}
	
	if ((flg_at == true) && (flg_dot == true)) {
		return true;
	} else {
		return false;
	}
}

/*'*********************************************************************
'【関 数 名 】 Chk_Tel(obj)
'【概 要    】 電話番号チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_Tel(obj){

	if(!(obj.match(/[^0-9\-]/gi) == null)){
		return false;
	}
	return true;
}

/*'*********************************************************************
'【関 数 名 】 Chk_Fax(obj)
'【概 要    】 FAX番号チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_Fax(obj){

	if(!(obj.match(/[^0-9\-]/gi) == null)){
		return false;
	}
	return true;
}

/*'*********************************************************************
'【関 数 名 】 Chk_Yubin(obj)
'【概 要    】 郵便番号チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_Yubin(obj){
/*
	data = obj.match(/^\d{3}-\d{4}$|^\d{3}-\d{2}$|^\d{3}$/);
	if(!data) {
		return false;
	}
	return true;
*/	
	if(!(obj.match(/[^0-9\-]/gi) == null)){
		return false;
	}
	return true;
}


/*'*********************************************************************
'【関 数 名 】 Chk_zenkaku(obj)
'【概 要    】 全角文字チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_zenkaku(obj){
	var i;

	for(i=0; i < obj.length; i++){
		if(escape(obj.charAt(i)).length < 4){
			return false;
		}
	}
	
	txt = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮｯｰ､｡｢｣ﾞﾟ";
	for (i=0; i< obj.length; i++){
		if (txt.indexOf(obj.charAt(i),0) >= 0) {
			return false;
		}
	}

	return true;
}

/*'*********************************************************************
'【関 数 名 】 Chk_hankaku(obj)
'【概 要    】 半角文字チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_hankaku(obj){
	kekka = 0;
	flag  = true;
	
	for(i=0; i<obj.length; i++){
		dore=escape(obj.charAt(i));
		if(!(dore.length==3  || dore.length==1)){
			flag = false;
			break;
		}
	}
	
	
	if(flag){
		return true;
	} else {
		return false;
	}
}
/*'*********************************************************************
'【関 数 名 】 Chk_hankakuNum(obj)
'【概 要    】 半角数字チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_hankakuNum(obj){
	if(!(obj.match(/[^0-9]/g) == null)){
		return false;
	}
	return true;
}

/*'*********************************************************************
'【関 数 名 】 Chk_hankakuEiji(obj)
'【概 要    】 半角英数字チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】 2003/04/9   【改訂者名】: 上中　亮
'**********************************************************************/
function Chk_hankakuEiji(obj){
	if(!(obj.match(/[^A-Za-z0-9-\s]/gi) == null) ){
		return false;
	}

	return true;
}

/*'*********************************************************************
'【関 数 名 】 Chk_hankakuKana(obj)
'【概 要    】 半角カナチェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_hankakuKana(obj){
	kekka = 0;
	var flag = true;

	txt = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮｯｰ､｡｢｣ﾞﾟ";
	for (i=0; i< obj.length; i++){
		dore=escape(obj.charAt(i));

		if (!(txt.indexOf(obj.charAt(i),0) >= 0)) {
			flag = false;
			break;
		}
	}

	if(flag){
		return true;
	} else {
		return false;
	}
}

/*'*********************************************************************
'【関 数 名 】 Chk_hankakuKana2
'【概 要    】 半角カナチェック

'【引 数 名 】	[データ型]	[I/O]　	[説明]
'	obj			String		I		対象文字列
'	flg			String		I		0=半角ｶﾅ、1=半角ｶﾅ＋半角英数字
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_hankakuKana2(obj,flg){
	var kekka = 0;
	var flag = true;
	var i = 0;
	var dore ="";

	txt = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮｯｰ､｡｢｣ﾞﾟ";

	for (i=0; i< obj.length; i++){
		dore=escape(obj.charAt(i));
		if (!(txt.indexOf(obj.charAt(i),0) >= 0)) {
			
			// 半角ｶﾅだけ許可するか？
			if(flg == 1){
				// 半角ｶﾅ、半角英数字の時は以外エラー
				if(!Chk_hankakuEiji(Object(obj.charAt(i)))){
					flag = false;
					break;
				}
			} else {
				flag = false;
				break;
			}
		}
	}
	
	return flag;
	
}

/*'*********************************************************************
'【関 数 名 】 Chk_hankakuKana(obj)
'【概 要    】 全角カナチェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/22  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_zenkakuKana(obj){

	var RE = /^[ァ-ヶ・ーヽヾ]*$/
	if(RE.test(obj) == true){
		return true;
	}else{
		return false;
	}
}

/*'*********************************************************************
'【関 数 名 】 Chk_errorWord(obj)
'【概 要    】 禁則文字チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2002/10/15  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_errorWord(obj){
	var src = obj;
	
	var pat = new RegExp(/\|/);
	iCount = src.match(pat);
	
	if (iCount != null){
		return false;
	} else {
		return true;
	}
}
/*'*********************************************************************
'【関 数 名 】 Chk_tisaikana(obj)
'【概 要    】 ｧ-ｯ-　->　ｱ-ﾂ(促音)
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 変換後の文字列
'----------------------------------------------------------------------
'【開 発 日 】 2002/11/20  【開発者名】: 森山　慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_tisaikana(obj){
	// 
/*
	var strWork = obj;
	strWork = strWork.replace(/[ｧ]/g , "ｱ");
	strWork = strWork.replace(/[ｨ]/g , "ｲ");
	strWork = strWork.replace(/[ｩ]/g , "ｳ");
	strWork = strWork.replace(/[ｪ]/g , "ｴ");
	strWork = strWork.replace(/[ｫ]/g , "ｵ");
	strWork = strWork.replace(/[ｬ]/g , "ﾔ");
	strWork = strWork.replace(/[ｭ]/g , "ﾕ");
	strWork = strWork.replace(/[ｮ]/g , "ﾖ");
	strWork = strWork.replace(/[ｯ]/g , "ﾂ");
	return strWork;
*/
}

/*'*********************************************************************
'【関 数 名 】 Chk_hankakuEiji2(obj, sFlg)
'【概 要    】 半角英字チェック
'【引 数 名 】 obj, sFlg
'【データ型 】 String, String
'【補 足    】 sFlg : 0=スペース不可 1=スペース可
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2003/04/07  【開発者名】: 宮本 裕介
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_hankakuEiji2(obj, sFlg){

	if( sFlg == "0" ){
		if(!(obj.match(/[^A-Za-z]/gi) == null)){
			return false;
		}
		return true;

	} else if( sFlg == "1" ){
		if(!(obj.match(/[^A-Za-z ]/gi) == null)){
			return false;
		}
		return true;
	}
}


/*'*********************************************************************
'【関 数 名 】 Chk_ByteNum
'【概 要    】 バイト数を調べる
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 int バイト数
'----------------------------------------------------------------------
'【開 発 日 】 2003/04/08  【開発者名】: 宮本 裕介
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_ByteNum(obj)
{
	var i;
	var j;
	var strValue;
	var strLetter;
	var count;

	count = 0;
	
	for (j = 0 ; j < obj.length; j++) {
		strLetter = escape(obj.charAt(j));
		if(strLetter.length < 4) count ++; else count += 2;
	}
	
	return parseInt(count,10);
}

/*'*********************************************************************
'【関 数 名 】 Chk_hankakuEisu(obj, sFlg)
'【概 要    】 半角英数字チェック
'【引 数 名 】 obj,		sFlg
'【データ型 】 String,	String
'【補 足    】 sFlg : 0=スペース不可 1=スペース可 2=記号可
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2003/04/08  【開発者名】: 宮本 裕介
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_hankakuEisu(obj, sFlg){

	if( sFlg == "0" ){
		if(!(obj.match(/[^A-Za-z0-9]/gi) == null)){
			return false;
		}
	} else if( sFlg == "1" ){
		if(!(obj.match(/[^A-Za-z0-9 ]/gi) == null)){
			return false;
		}
	} else if( sFlg == "2" ){
		if(!(obj.match(/[^A-Za-z0-9,._ ]/gi) == null)){
			return false;
		}
	}
	return true;
}

/*'*********************************************************************
'【関 数 名 】 Chk_hankakuEisu2(obj)
'【概 要    】 半角英数字（A-Z, a-z,0-9, アンダーライン）チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2003/04/08  【開発者名】: 森山 慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_hankakuEisu2(obj){

	if(!(obj.match(/[^A-Za-z0-9_]/gi) == null)){
		return false;
	}
	return true;

}

/*'*********************************************************************
'【関 数 名 】 Chk_hankakuEisu3(obj)
'【概 要    】 半角英数字（A-Z, a-z,0-9, アンダーライン,.'&/-+）チェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2003/05/06  【開発者名】: 森山 慶彦
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_hankakuEisu3(obj){

	if(!(obj.match(/[^A-Za-z0-9_\-\+\(\)., &'?\[\];:/]/gi) == null)){
		return false;
	}
	return true;
}

/*'*********************************************************************
'【関 数 名 】 Chk_Url(obj)
'【概 要    】 ホームページURLのチェック
'【引 数 名 】 obj
'【データ型 】 String
'【戻 り 値 】 true : false
'----------------------------------------------------------------------
'【開 発 日 】 2003/04/24  【開発者名】: 宮本 裕介
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_Url(obj){

	if(!(obj.match(/[^/._%~&=?\-\w]/gi) == null)){
		return false;
	}
	return true;

}

/*'*********************************************************************
'【関 数 名 】 Chk_File(obj, sExt)
'【概 要    】 fileのチェック
'【引 数 名 】	[データ型]	[I/O]　	[説明]
'	obj			String		I		対象文字列
	sExt		String		I		拡張子指定（省略可）
'【データ型 】 String
'【戻 り 値 】	int 		O		エラー時:-1 正常時:ファイル名文字数
'----------------------------------------------------------------------
'【開 発 日 】 2003/04/24  【開発者名】: 宮本 裕介
'【改 訂 日 】             【改訂者名】: 
'**********************************************************************/
function Chk_File(obj, sExt){

	var i;
	var j;
	var sFileName;

	i = obj.lastIndexOf("\\");
	sFileName = obj.substr(i+1);
	j = sFileName.lastIndexOf(".");

	if(!(sFileName.match(/[^_.\w]/gi) == null)){
		return -1;
	}else if(arguments[1]){
		if((sFileName.substr(j+1)).toLowerCase() != sExt){
			return -1;
		}
	}
	return sFileName.length;

}
