
/****************************************************************************
 *  Client Side JavaScript Functions                                        *
 ****************************************************************************
 *                                                                          *
 *  formcheck.js                                                            *
 *                                                                          *
 ****************************************************************************
 *  フォームの入力値を検査、操作する関数達                                  *
 ***************************************************************************/

/*==========================================================================*
 * setAllCheckbox                                                           *
 * 指定した範囲の全てのチェックボックスに対してON/OFFを行う                 *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/19 H.Inoue                                                 *
 * 更新：2000/06/19 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：formno : 対象フォームのインデックス（0〜）                         *
 *       start  : 対象チェックボックスの開始インデックス                    *
 *       end    : 対象チェックボックスの最終インデックス                    *
 *       value  : ON -> true, OFF -> false                                  *
 * 返値：なし                                                               *
 * 備考：                                                                   *
 *=========================================================================*/
    function setAllCheckbox( formno, start, end, value ){
        for ( var i = start; i <= end; i++ ) {
            document.forms[formno].elements[i].checked = value;
        }
    }
/*==========================================================================*
 * CheckElements                                                            *
 * チェックボックスが最低１つチェックされているか調べる                     *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：form : 対象フォーム                                                *
 *       num1 : 対象チェックボックスの開始インデックス（デフォルトはゼロ）  *
 *       num2 : 対象チェックボックスの最終インデックス（デフォルトは要素数）*
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckElements( form, num1, num2 ) {
        // num1に値が入ってない時はゼロをセット
        if( num1.length == 0 ) { num1 = 0; }
        
        // num2に値が入ってない時は要素の数を数える
        if( num2.length == 0 ) { num2 = form.elements.length; }
        
        // 順番に見ていって、チェックされているボックスがあった時点でTRUEを返す
        for( var i = num1; i <= num2; i++ ) {
            if( form.elements[i].checked ) {
                return true;
            }
        }
        return false;
    }
/*==========================================================================*
 * CheckNull                                                                *
 * 入力必須項目に値が入っているか調べる                                     *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str : 入力値                                                       *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckNull( str ) {
        if( str == "" || str == null || str.length == 0 ) {
            return false;
        }
        return true;
    }
/*==========================================================================*
 * CheckKeta                                                                *
 * 入力桁数が制限範囲内か調べる                                             *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str  : 入力値                                                      *
 *       num1 : 許容最小桁数                                                *
 *       num2 : 許容最大桁数                                                *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckKeta( str, num1, num2 ) {
        // num1に値が入ってない時はゼロをセット
        if( num1.length == 0 ) { num1 = 0; }
        
        // num2に値が入ってない時はゼロをセット
        if( num2.length == 0 ) { num2 = 0; }
        
        // num1の方が大きかったらnum2と入れ替える
        if( num1 > num2 ) {
            var numx = num1;
                num1 = num2;
                num2 = numx;
        }
        
        // 最小より小さいか最大より大きい時FALSEを返す
        if( str.length < num1 || num2 < str.length ) {
            return false;
        }
        return true;
    }
/*==========================================================================*
 * CheckStr                                                                 *
 * 入力値が許容文字の範囲内か調べる                                         *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str1 : 入力値                                                      *
 *       str2 : 許容文字                                                    *
 * 返値：boolean                                                            *
 * 備考：半角数字(CheckNum)、半角英字(CheckAlpha)、                         *
 *       半角英数字(CheckAandN)などから呼ばれる                             *
 *=========================================================================*/
    function CheckStr( str1, str2 ){
        // 入力値を１文字ずつ調べる
        for(var i = 0; i < str1.length; i++ ) {
            // 小文字は全て大文字化しておく
            var c = str1.toUpperCase().charAt(i);
            
            // 許容文字に含まれていなければFALSEを返す
            if( str2.indexOf(c) < 0) {
                return false;
            }
        }
        return true;
    }
    
/*==========================================================================*
 * CheckSingle                                                              *
 * 入力値がシングルクォーツか調べる                                         *
 *--------------------------------------------------------------------------*
 * 作成：2004/01/26 C.Hirata                                                *
 *--------------------------------------------------------------------------*
 * 引数：str     : 入力値                                                   *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckSingle( str ) {
        // 許容文字セット
        var Chars = "'";
        
        for(var i = 0; i < str.length; i++ ) {
            // 小文字は全て大文字化しておく
            var c = str.toUpperCase().charAt(i);
            
            // 許容文字に含まれていなければFALSEを返す
            if(c==Chars) {
                return false;
            }
        }
        return true;
    }

/*==========================================================================*
 * CheckNum                                                                 *
 * 入力値が半角数字か調べる                                                 *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str     : 入力値                                                   *
 *       floatsw : 小数OK(true)/小数NG(false)                               *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckNum( str, floatsw ) {
        // 許容文字セット
        var Chars = "0123456789";
        
        // 小数OKなら小数点も許容文字に加える
        if ( floatsw ) { Chars += "."; }
        
        // CheckStr関数の返値を返す
        return CheckStr( str, Chars )
    }
/*==========================================================================*
 * CheckAlpha                                                               *
 * 入力値が半角英字か調べる                                                 *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str     : 入力値                                                   *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckAlpha( str ) {
        // 許容文字セット
        var Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        
        // CheckStr関数の返値を返す
        return CheckStr( str, Chars )
    }
/*==========================================================================*
 * CheckAandN                                                               *
 * 入力値が半角英数字か調べる                                               *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str     : 入力値                                                   *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckAandN( str ) {
        // 許容文字セット
        var Chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        
        // CheckStr関数の返値を返す
        return CheckStr( str, Chars )
    }
/*==========================================================================*
 * CheckTel                                                                 *
 * 入力値が電話番号、郵便番号で使用可能文字か調べる                         *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/26 H.Inoue                                                 *
 * 更新：2000/06/26 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str     : 入力値                                                   *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckTel( str ) {
        // 許容文字セット
        var Chars = "0123456789-";
        
        // CheckStr関数の返値を返す
        return CheckStr( str, Chars )
    }

/*==========================================================================*
 * CheckTel                                                                 *
 * 入力値がシリアルナンバーで使用可能文字か調べる                           *
 *--------------------------------------------------------------------------*
 * 引数：str     : 入力値                                                   *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckSerial( str ) {
        // 許容文字セット
        var Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
        
        // CheckStr関数の返値を返す
        return CheckStr( str, Chars )
    }

/*==========================================================================*
 * CheckMail                                                                *
 * 入力値がE-mail可能文字か調べる                                           *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/26 H.Inoue                                                 *
 * 更新：2000/06/26 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str     : 入力値                                                   *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
    function CheckMail( str ) {
        // 許容文字セット
        var Chars = "@.!#$%&*+-/0123456789=?ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`{|}~";
        var Chars2 = "@.";
        
        // CheckStr関数の返値を返す
        if ( CheckStr( str, Chars ) ) {
            if ( CheckStr( Chars2, str ) ) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
/*==========================================================================*
 * CheckDate                                                                *
 * 日付が妥当か調べる                                                       *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str  : 入力値(YYYYMMDD)                                            *
 *       num1 : 許容最小桁数                                                *
 *       num2 : 許容最大桁数                                                *
 * 返値：0    : 正常                                                        *
 *       1-12 : 不正な日エラー（返値が対象の月を表す）                      *
 *       13   : 不正な月（1〜12以外の数字）エラー                           *
 *       21   : 桁数エラー                                                  *
 *       22   : 数字エラー                                                  *
 *       23   : 不正な日（ゼロまたは負）エラー                              *
 * 備考：年(YYYY)のチェックはしていない。                                   *
 *=========================================================================*/
    function CheckDate( str ) {
        // ８桁チェック
        if ( !CheckKeta( str, 8, 8 ) ) {
            return 21;
        }
        // 数字のみチェック
        if ( !CheckNum( str, false ) ) {
            return 22;
        }
        // 月(MM)の数字範囲チェック
        var numMM = parseInt( str.substring(4,6), 10 );
        if ( numMM < 1 || numMM > 12){
            return 13;
        }
        // 日(DD)の数字範囲チェック
        var numDD = parseInt( str.substring(6,8), 10 );
        if ( numDD < 1 ) {
            return 23;
        } else {
            // １月
            if ( numMM == 1 ) {
                if ( numDD > 31 ) { return 1; }
            // ２月
            }else if ( numMM == 2 ) {
                if ( parseInt( str.substring(0,4) % 4 ) == 0 ) {
                  if ( numDD > 29 ) { return 2; }
                }else{
                  if ( numDD > 28 ) { return 2; }
                }
            // ３月
            }else if ( numMM == 3 ) {
                  if ( numDD > 31 ) { return 3; }
            // ４月
            }else if ( numMM == 4 ) {
                  if ( numDD > 30 ) { return 4; }
            // ５月
            }else if ( numMM == 5 ) {
                  if ( numDD > 31 ) { return 5; }
            // ６月
            }else if ( numMM == 6 ) {
                  if ( numDD > 30 ) { return 6; }
            // ７月
            }else if ( numMM == 7 ) {
                  if ( numDD > 31 ) { return 7; }
            // ８月
            }else if ( numMM == 8 ) {
                  if ( numDD > 31 ) { return 8; }
            // ９月
            }else if ( numMM == 9 ) {
                  if ( numDD > 30 ) { return 9; }
            // １０月
            }else if ( numMM == 10 ) {
                  if ( numDD > 31  ) { return 10; }
            // １１月
            }else if ( numMM == 11 ) {
                  if ( numDD > 30  ) { return 11; }
            // １２月
            }else if ( numMM == 12 ) {
                  if ( numDD > 31  ) { return 12; }
            }
        }
        return true;
    }
/*==========================================================================*
 * CheckFuture                                                              *
 * 日付が未来か調べる                                                       *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str   : 入力値(YYYYMMDD)                                           *
 *       today : 今日の日付(YYYYMMDD)                                       *
 * 返値：boolean                                                            *
 * 備考：str、todayとも正しい日付書式で入力されることが条件                 *
 *=========================================================================*/
    function CheckFuture( str, today ){
        // 入力値と今日の日付の大小を数値で比較する
        if ( parseInt( str, 10 ) > parseInt( today, 10 ) ) {
            
            // 入力日が未来の日付だったらFALSEを返す
            return false;
        }
        return true;
    }
/*==========================================================================*
 * Kana_Chk                                                              *
 * 文字列中に、半角カタカナが含まれているか判別する。                       *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str   : 文字列 　　　　　　　                                      *
 * 返値：boolean                                                            *
 * 備考：                 *
 *=========================================================================*/
function Kana_Chk(str)
{
	//----------------------------------------------------------------
	// 文字列中に、半角カタカナが含まれているか判別する。
	//----------------------------------------------------------------
	txt = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮ､｡｢｣ﾞﾟ";
	for (i=0; i<str.length; i++)
	{
		if (txt.indexOf(str.charAt(i),0) >= 0) { return false; }
	}
	return true;
}
/*==========================================================================*
 * Kana_Chk                                                              *
 * 文字列中に、半角カタカナが含まれているか判別する。                       *
 *--------------------------------------------------------------------------*
 * 作成：2000/06/14 H.Inoue                                                 *
 * 更新：2000/06/14 H.Inoue                                                 *
 *--------------------------------------------------------------------------*
 * 引数：str   : 文字列                                                     *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
function Kana_Chk2(str)
{	
	//----------------------------------------------------------------
	// 文字列中に、半角カタカナが含まれているか判別する。
	//----------------------------------------------------------------
	//NULLチェック
	if(str=="") return "null";
	//ブラウザチェック
	navi = navigator.appName;
	if(navi.indexOf("Netscape") != -1)
	{		//ネスケの場合
			chk  ="%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF";
			chk +="%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE";
			chk +="%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%A6%DD%DD";
			len = 3;
	}
	else
	{		//IEの場合
			chk  ="%uFF71%uFF72%uFF73%uFF74%uFF75%uFF76%uFF77%uFF78%uFF79";
			chk +="%uFF7A%uFF7B%uFF7C%uFF7D%uFF7E%uFF7F%uFF80%uFF81%uFF82";
			chk +="%uFF83%uFF84%uFF85%uFF86%uFF87%uFF88%uFF89%uFF8A%uFF8B";
			chk +="%uFF8C%uFF8D%uFF8E%uFF8F%uFF90%uFF91%uFF92%uFF93%uFF94";
			chk +="%uFF95%uFF96%uFF97%uFF98%uFF99%uFF9A%uFF9B%uFF9C%uFF66%uFF9D";
			len = 6;
	}	
	//チェック文字の文列の長さ取得
	chk_len = chk.length;
	//入力文字アスキーコード変換
	ascii = escape(str);
	//チェックする回数取得
	end = chk_len/len;

	for(i = 0;i < end; i++)
	{
		//変換後コードをlen区切りにする	
		chk_buff =	chk.substring(i*len,i*len+len);
		if(ascii.indexOf(chk_buff) != -1)
		{
				return false;
		}
	}
	return true;
	
}
/*==========================================================================*
 * CheckAandNandS( str )                                                    *
 * 文字列中に、半角英数字記号以外が含まれているか判別する。                 *
 *--------------------------------------------------------------------------*
 * 作成：2007/06/07                                                         *
 * 更新：2007/06/07                                                         *
 *--------------------------------------------------------------------------*
 * 引数：str   : 文字列 　　　　　　　                                      *
 * 返値：boolean                                                            *
 * 備考：                                                                   *
 *=========================================================================*/
function CheckAandNandS(str)
{
	if  ( str.match(/^[!-~]+$/ig)    )
	{
		return true;
	}
	return false;
}
/****************************************************************************
 *  Copyright(C) 2000 Nihon Application Co.Ltd.,All Rights Reserved         *
 ***************************************************************************/

