// 日付・時間・数値・文字・ブランクチェック関数
function bol_chkform( form ) {
    // 変数定義
    var i, j, k, flg;

    j = 0;
    bchflg = true;
    while( form.elements[j] != null ) {
        // 時・分チェック
        if ( form.elements[j].id =="TIMECHK" ) {
            if( form.elements[j].value == "" || form.elements[j].value.match(/[ 　]/) ) {
                if( form.elements[j+1].value != "" &&  (form.elements[j+1].value.match(/[ 　]/)==null) ) {
                    msgPut(form,1,j);
                    return false;
                }
            }
            else {
                if( form.elements[j+1].value == "" ||  form.elements[j+1].value.match(/[ 　]/) ) {
                    msgPut(form,1,j+1);
                    return false;
                }
            }
            for( i = 0; i < 2; i++ ) {
                if ( !numChk( form, j+i ) ){
                    return false;
                }
                if( i == 0 ) {
                    if( form.elements[j+i].value < 0 || form.elements[j+i].value > 24 ) {
                        msgPut(form,2,j+i);
                        return false;
                    }
                }
                else {
                    if( form.elements[j+i].value < 0 || form.elements[j+i].value > 24 ) {
//                    if( form.elements[j+i].value != 0 && form.elements[j+i].value != 30 ) {
                        msgPut(form,2,j+i);
                        return false;
                    }

                }

            }

        }

        // 時チェック
        else if ( form.elements[j].id == "HOURCHK" ) {
            if(!numChk(form,j)) {
                return false;
            }
            else if ( form.elements[j].value < 0 || form.elements[j].value > 24 ) {
                msgPut(form,3,j);
                return false;
            }
        }
        // 数値チェック＋小数を拒否
        else if ( form.elements[j].id =="NUMCHK0" ) {
            if( !numChk(form,j)) {
                return false;
            }
            if( form.elements[j].value.match(/[.]/) != null) {
                msgPut(form,0,j);
                return false;
            }
        }
        // 数値チェック＋整数部は一桁まで有効
        else if ( form.elements[j].id =="NUMCHK1" ) {
            if(!numChk(form,j)) {
                return false;
            }   
            else if( Math.floor(eval(form.elements[j].value)) >= 10 ) {
                msgPut(form,5,j);
                return false;
            }
        }
        // 数値チェック＋整数部は二桁まで有効
        else if ( form.elements[j].id =="NUMCHK2" ) {
            if ( !numChk( form, j ) ) {
                return false;
            }
            else if ( Math.floor( eval( form.elements[j].value ) ) >= 100 ) {
                msgPut( form, 5, j );
                return false;
            }
        }
        // 数値チェック＋整数部は三桁まで有効
        else if( form.elements[j].id =="NUMCHK3" ) {
            if ( !numChk( form, j ) ) {
                return false;
            }
            else if ( Math.floor( eval( form.elements[j].value ) ) >= 1000 ) {
                msgPut( form, 5, j );
                return false;
            }
        }
        // 数値チェック＋整数部は四桁まで有効
        else if( form.elements[j].id =="NUMCHK4" ) {
            if(!numChk( form, j ) ) {
                return false;
            }
            else if( Math.floor(eval(form.elements[j].value)) >= 10000 ) {
                msgPut( form, 5, j );
                return false;
            }
        }
        // 数値チェック＋整数部は五桁まで有効
        else if( form.elements[j].id =="NUMCHK5" ) {
            if( !numChk( form, j ) ) {
                return false;
            }
            else if( Math.floor(eval(form.elements[j].value)) >= 100000 ) {
                msgPut( form, 5, j );
                return false;
            }
        }
        // 数値チェック＋整数部は六桁まで有効
        else if( form.elements[j].id =="NUMCHK6" ) {
            if( !numChk( form, j ) ) {
                return false;
            }   
            else if( Math.floor( eval( form.elements[j].value ) ) >= 1000000 ) {
                msgPut(form,5,j);
                return false;
            }
        }
        // 月、日チェックその１
        else if( form.elements[j].id == "DATECHK" ) {
            if( form.elements[j].value != "" || form.elements[j+1].value != "" || form.elements[j+2].value != "") {
                if( form.elements[j].value == "" || isNaN(form.elements[j].value) || form.elements[j].value.match(/[ 　]/) ) {
                    msgPut( form, 4, j );
                    return false;
                }
                else if( form.elements[j+1].value == "" || form.elements[j+1].value >= 13 || form.elements[j+1].value <= 0 || isNaN(form.elements[j+1].value) || form.elements[j].value.match(/[ 　]/) ) {
                    msgPut( form, 4, j+1 );
                    return false;
                }
                else if( form.elements[j+2].value == "" || form.elements[j+2].value > 31 || form.elements[j+2].value <= 0 || isNaN(form.elements[j+2].value) || form.elements[j].value.match(/[ 　]/) ) {
                    msgPut( form, 4, j+2 );
                    return false;
                }
            }
        }
        // 月、日チェックその２
        else if( form.elements[j].id == "DATECHKINS" ) {
            if( form.elements[j].value == "" && form.elements[j+1].value == "" && form.elements[j+2].value == "") {
                msgPut( form, 10, j );
                return false;
            }
            else {
                if( form.elements[j].value == "" || isNaN(form.elements[j].value) || form.elements[j].value.match(/[ 　]/) ) {
                    msgPut( form, 4, j );
                    return false;
                }
                else if( form.elements[j+1].value == "" || form.elements[j+1].value >= 13 || form.elements[j+1].value <= 0 || isNaN(form.elements[j+1].value) || form.elements[j].value.match(/[ 　]/) ) {
                    msgPut( form, 4, j+1 );
                    return false;
                }
                else if( form.elements[j+2].value == "" || form.elements[j+2].value > 31 || form.elements[j+2].value <= 0 || isNaN(form.elements[j+2].value) || form.elements[j].value.match(/[ 　]/) ) {
                    msgPut( form, 4, j+2 );
                    return false;
                }
            }
        }
        // ブランクチェック
        else if( form.elements[j].id == "BLKCHK" ) {
            if( form.elements[j].value == "" ) {
                msgPut( form, 6, j );
                return false;
            }
        }
        // ブランクチェックＡ
        else if( form.elements[j].id == "BLKCHKA" ) {
            if( form.elements[j].value == "" || form.elements[j].value.match(/[ 　]/) ) {
                bchflg = false;
                k=j;
            }
            else if ((form.elements[j].value.indexOf("@",0)<=0) ||
            		(form.elements[j].value.indexOf(".",0)<=0)) {
	            msgPut( form, 15, j );
	       		return false;
            }
        }
        // ブランクチェックＢ
        else if( form.elements[j].id == "BLKCHKB" ) {
           if( form.elements[j].value == "" || form.elements[j].value.match(/[ 　]/) ) {
            	if ( bchflg == false ) {
                    msgPut( form, 9, k );
                    return false;
                }
            }
            else if( !telChk( form, j ) ) {
                return false;
            }
        }
        // 電話番号チェック
        else if( form.elements[j].id == "TELCHK" ) {
            if( !telChk( form, j ) ) {
                return false;
            }
        }
        // 全角チェック
        else if( form.elements[j].id == "DBCHK" ) {
            for( i=0 ; i < form.elements[j].value.length ; i++ ) {
                if ( ( escape(form.elements[j].value.charAt(i)).length >=4 ) &&
                     ( !form.elements[j].value.match(/[ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝ]/) ) ) {
                    msgPut( form, 7, j );
                    return false;
                }
            }
        }
        // ブランク＋全角チェック
        else if( form.elements[j].id == "BLKDBCHK"  ) {
            if( form.elements[j].value == "" || form.elements[j].value.match(/[ 　]/) )  {
                msgPut(form,6,j);
                return false;
            }
            for( i=0; i < form.elements[j].value.length; i++ ) {
                if ( ( escape( form.elements[j].value.charAt( i ) ).length >=4 ) &&
                     ( !form.elements[j].value.match(/[ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝ]/) ) ) {
                    msgPut(form,7,j);
                    return false;
                }
            }
        }
        // ブランク＋数字チェック
        else if( form.elements[j].id == "BLKNUMCHK"  ) {
            if( form.elements[j].value == "" || form.elements[j].value.match(/[ 　]/) ) {
                msgPut( form, 6, j );
                return false;
            }
            if( !numChk( form, j ) ) {
                return false;
            }
            if( form.elements[j].value.match(/[.]/) != null ) {
                msgPut(form,0,j);
                return false;
            }
        }
        // ブランク＋ひらがな
        else if( form.elements[j].id == "BLKKANACHK" ) {
            if( form.elements[j].value == "" ) {
                msgPut(form,6,j);
                return false;
            }
            var checkStr = new String ("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんぁぃぅぇぉっゃゅょがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ　");
			hiragana = form.elements[j].value.replace(/ /g,"");
    		if(hiragana.length == 0) {
                msgPut( form, 6, j );
        		return false;
		    }
		    for( i=0; i<hiragana.length; i++ ) {
        		if ( checkStr.indexOf( hiragana.charAt( i ), 0 ) == -1 ) {
                    msgPut(form,13,j);
                    return false;
        		}
		    }
        }
        // ブランク＋カタカナチェック
        else if( form.elements[j].id == "BLKKATACHK" ) {
            if( form.elements[j].value == "" ) {
                msgPut( form, 6, j );
                return false;
            }
            var checkStr = new String ( "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ　");
            katakana = form.elements[j].value.replace( / /g, "" );
            if( katakana.length == 0 ) {
                msgPut( form, 6, j );
                return false;
            }
            for( i=0; i<katakana.length; i++ ) {
                if ( checkStr.indexOf( katakana.charAt( i ), 0 ) == -1 ) {
                    msgPut( form, 13, j );
                    return false;
                }
            }
        }

        // 文字数オーバーチェック
        else if( form.elements[j].id == "MAXCHK"  ) {
            wLen = getLength( form.elements[j].value );
            if( form.elements[j].maxLength < wLen ) {
                msgPut( form, 11, j );
                return false;
            }
        }

        j++;
    }

    if( form.P_PATIENTID != null ) {
        if ( form.P_PATIENTID.type == "text" ) {
            if ( !idChk( form ) ) {
                return false;
            }
        }
    }
    return true;
}


// 数値チェック関数(mainChkに付随するもの)
function numChk( form, i ) {
    if( isNaN( form.elements[i].value ) ) {
        msgPut( form, 0, i );
        return false;
    }
    else if( eval( form.elements[i].value ) < 0 ) {
        msgPut( form, 0, i );
        return false;
    }
    else {
        return true;
    }
}

// 電話番号チェック関数(mainChkに付随するもの)
function telChk( form, i ) {

    var checkStr = new String ( "0123456789-" );
   	tel = form.elements[i].value.replace(/ /g,"");

    for( j=0; j<tel.length; j++ ) {
        if( checkStr.indexOf( tel.charAt( j ), 0 ) == -1 ) {
	        msgPut(form,14,j);
	   		return false;
       	}
   	}
    return true;
}


// メッセージ出力関数
function msgPut( form, no, i ) {
    switch ( no ) {
        case  0: alert("数字のみ入力可能です");             break;
        case  1: alert("時・分の両方を入力してください！"); break;
        case  2: alert("正しい時間を入力してください！");   break;
        case  3: alert("正しい時間を入力してください！");   break;
        case  4: alert("日付入力エラーです！");             break;
        case  5: alert("数値が大きすぎます！");             break;
        case  6: alert("必須項目です。ご記入お願いします"); break;
        case  7: alert("半角英数字のみ入力可能です！");     break;
        case  8: alert("整数値を入力してください！");       break;
        case  9: alert("メールアドレス又は電話番号を入力してください！"); break;
        case 10: alert("日付は入力必須です！");             break;
        case 11: alert("最大入力文字数をオーバーしています！"); break;
        case 12: alert("どれかを選択してください");         break;
        case 13: alert("ひらがなのみ入力可能です");         break;
        case 14: alert("数字及びハイフンのみ入力可能です"); break;
        case 15: alert("メールアドレスの形式が正しくありません"); break;
        case 16: alert("カタカナのみ入力可能です");         break;
    }

    form.elements[i].focus();
    if ( form.elements[i].type == "text" )
    {
        form.elements[i].select();
    }

}

// 文字数カウント関数
function getLength( moji ) {
    var i,cnt = 0;
    for( i=0; i<moji.length; i++ ) {
        if ( escape( moji.charAt( i ) ).length >=4 ) { cnt += 2; } else { cnt++; }
    }
    return cnt;
}
