//----------------------------------------------------------------------
// プロシージャ名：jsIsNum
// 機能　　　　　：整数のチェック
// 引数　　　　　：inbuff - チェック対象文字列
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function jsIsNum(inbuff){
    var sbuff;
    var c;
    var i;

    sbuff=""+inbuff;
    for (i=0; i<sbuff.length; i++) {
        c = sbuff.substring(i,i+1);

        if (c<"0" || c>"9")
            return false;
    }
    return true;
}
//----------------------------------------------------------------------
// プロシージャ名：jsTrim
// 機能　　　　　：空白を省いた文字列を返す
// 引数　　　　　：inbuff - 処理対象文字列
// 戻り値　　　　：空白を省いた文字列
//----------------------------------------------------------------------
function jsTrim(inbuff){
    var sbuff;
    var rbuff="";
    var c;
    var i;

    sbuff=""+inbuff;
    for (i=0; sbuff.length>i; i++) {
        c = sbuff.substring(i,i+1);

        if (c!=" ")
            rbuff+=""+c;
    }
    return rbuff;
}
//----------------------------------------------------------------------
// プロシージャ名：jsChkDate
// 機能　　　　　：日付存在チェック
// 引数　　　　　：y - 年、m - 月、d - 日
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function jsChkDate(y, m, d){
	var d_max;

    //数字のチェック
    if (!jsIsNum(y)) return false;
	if (!jsIsNum(m)) return false;
	if (!jsIsNum(d)) return false;
    //月チェック
    if (y<1900 || 2078<y) return false;

    //月チェック
      if (m<1 || 12<m) return false;

      //月の最終日の取得
      if (m==2)
          if (y%400==0)
              d_max=29;
          else
              if (y%100==0)
                  d_max=28;
              else
                  if (y%4==0)
                      d_max=29;
                  else
                      d_max=28;
      else
          if (m==4 || m==6 || m==9 || m==11)
              d_max=30;
          else
              d_max=31;

      //日チェック
      if (d<1 || d_max<d) return false;

      return true;
}
//----------------------------------------------------------------------
// プロシージャ名：DateCompare
// 機能　　　　　：日付比較
// 引数　　　　　：SrcDate - 下限日付、DestDate - 上限日付
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function DateCompare(SrcDate,DestDate){
	if (DestDate==""){
		return true;
	}
	if (SrcDate <= DestDate ){
		return true;
	}else{
		return false;
	}
}
//----------------------------------------------------------------------
// プロシージャ名：YearGtoS
// 機能　　　　　：和暦→西暦変換
// 引数　　　　　：Gengo - 元号＜明治→0、大正→1、明治→2、平成→3＞
// 　　　　　　　：Year - 年
// 戻り値　　　　：西暦
//----------------------------------------------------------------------
function YearGtoS(Gengo, Year){
	var RetGengo = jsTrim(Gengo);
	var RetYear = parseInt(jsTrim(Year));
	
	if (RetGengo == "0"){
		//明治
		return RetYear + 1867;
	}else if(RetGengo == "1"){
		//大正
		return RetYear + 1911;
	}else if(RetGengo == "2"){
		//昭和
		return RetYear + 1925;
	}else if(RetGengo == "3"){
		//平成
		return RetYear + 1988;
	}else{
		return "";
	}
}
//----------------------------------------------------------------------
// プロシージャ名：RefZip
// 機能　　　　　：郵便番号・入力チェック
// 説明　　　　　：入力テキストボックスが２つに分割されている場合に使用
// 引数　　　　　：One - 郵便番号１、Two - 郵便番号２
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function RefZip(One, Two){
	var ValFir;						//郵便番号１
	var ValSec;						//郵便番号２
	
	//空文字削除
	ValFir = One.replace(" ","");	
	ValSec = Two.replace(" ","");
	
	if (ValFir == "" && ValSec == ""){return false;}
	
	return true;
}
//----------------------------------------------------------------------
// プロシージャ名：CurZip
// 機能　　　　　：郵便番号・妥当性チェック
// 説明　　　　　：入力テキストボックスが２つに分割されている場合に使用
// 引数　　　　　：One - 郵便番号１、Two - 郵便番号２
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function CurZip(One, Two){
	var ValFir;						//郵便番号１
	var ValSec;						//郵便番号２
	var char_length = "あ".length	//文字列長取得
	
	//空文字削除
	ValFir = One.replace(" ","");	
	ValSec = Two.replace(" ","");
	
	//入力チェックに該当する場合はTRUEを返す
	if (ValFir == "" && ValSec == ""){return true;}
	
	/////郵便番号１
	if (isNaN(ValFir)){return false;}		//数値チェック
	if (ValFir.length != 3){return false;}	//文字列長チェック
	
	/////郵便番号２
	if (isNaN(ValSec)){return false;}			//数値チェック
	if (ValSec.length != 4){return false;}	//文字列長チェック
	
	return true;
}
//----------------------------------------------------------------------
// プロシージャ名：RefTel
// 機能　　　　　：電話番号・入力チェック
// 説明　　　　　：入力テキストボックスが３つに分割されている場合に使用
// 引数　　　　　：One - 市外局番、Two - 市内局番、Three - 番号
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function RefTel(One, Two, Three){
	var ValFir;						//電話番号１
	var ValSec;						//電話番号２
	var ValThi;						//電話番号３
	
	//空文字削除
	ValFir = One.replace(" ","");	
	ValSec = Two.replace(" ","");
	ValThi = Three.replace(" ","");
	
	if (ValFir == "" && ValSec == "" && ValThi == ""){return false;}
	
	return true;
}
//----------------------------------------------------------------------
// プロシージャ名：CurTel
// 機能　　　　　：電話番号・妥当性チェック
// 説明　　　　　：入力テキストボックスが３つに分割されている場合に使用
// 引数　　　　　：One - 市外局番、Two - 市内局番、Three - 番号
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function CurTel(One, Two, Three){
	var ValFir;						//電話番号１
	var ValSec;						//電話番号２
	var ValThi;						//電話番号３
	var char_length = "あ".length	//文字列長取得
	
	//空文字削除
	ValFir = One.replace(" ","");	
	ValSec = Two.replace(" ","");
	ValThi = Three.replace(" ","");
	
	//入力チェックに該当する場合はTRUEを返す
	if (ValFir == "" && ValSec == "" && ValThi == ""){return true;}
	
	/////電話番号１
	if (ValFir.charAt(0) != 0){return false;}	//先頭文字チェック
	if (isNaN(ValFir)){return false;}			//数値チェック
	if (ValFir.length > 5){return false;}		//文字列長チェック
	
	/////電話番号２
	if (isNaN(ValSec)){return false;}			//数値チェック
	if (ValSec.length > 4){return false;}		//文字列長チェック
	
	/////電話番号３
	if (isNaN(ValThi)){return false;}			//数値チェック
	if (ValThi.length != 4){return false;}		//文字列長チェック
	
	return true;
}
//----------------------------------------------------------------------
// プロシージャ名：KanaChk
// 機能　　　　　：ふりかな・妥当性チェック
// 説明　　　　　：全角かな・全角カナ・半角カナはOKとする
// 引数　　　　　：Item - チェック文字列
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function KanaChk(Item){
	var BaseStr;					//空文字を排除した判別する文字列
	var i;							//カウンタ
	var char_length = "あ".length	//文字列長取得

	//スペースを取り除く
	BaseStr = jsTrim(Item);
	for(i=0;i<BaseStr.length;i=i+char_length){
		if (!(BaseStr.charAt(i).match(/^[ぁ-んァ-ンｧ-ﾝﾞﾟ]$/))){
			return false;
		}
	}
	return true;
}
//----------------------------------------------------------------------
// プロシージャ名：CurBirth
// 機能　　　　　：生年月日・妥当性チェック
// 説明　　　　　：年月日が別テキストボックスの場合に使用
// 引数　　　　　：Gengo - 元号＜明治→0、大正→1、明治→2、平成→3＞
// 　　　　　　　：Year - 年(西暦)、Month - 月、Day - 日
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function CurBirth(Gengo, Year, Month, Day){
	var ValGengo = Gengo;			//元号
	var ValYear = jsTrim(Year);		//年
	var ValMonth = jsTrim(Month);	//月
	var ValDay = jsTrim(Day);		//日
	var ValDate;					//チェック日付
	var now = new Date();			//現在日付
	
	//入力チェックに該当する場合はTRUEを返す
	if (Gengo == "" && ValYear == "" && ValMonth == "" && ValDay == ""){return true;}
	
	if (parseInt(ValYear) < 0){return false;}
	
	ValYear = YearGtoS(ValGengo,ValYear);
	
	ValDate = new Date(ValYear + "/" + ValMonth + "/" + ValDay);	
	
	if (jsChkDate(ValYear, ValMonth, ValDay) == false){return false;}	//日付の存在チェック
	if (DateCompare(ValDate, now) == false){return false;}	//日付の存在チェック
	
	return true;
}
//----------------------------------------------------------------------
// プロシージャ名：RefArea
// 機能　　　　　：業務エリア・入力チェック
// 説明　　　　　：都道府県リスト・業務エリアリストのどちらも選択されていない場合False
// 引数　　　　　：Todofuken - 都道府県、Area - 業務エリア
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function RefArea(Todofuken, Area){	
	if (Todofuken == "" && Area == ""){return false;}
	
	return true;
}
//----------------------------------------------------------------------
// プロシージャ名：MultiTextChk
// 機能　　　　　：テキストエリアの桁数チェック
// 引数　　　　　：Data - 入力データ、MaxLen - MaxLength
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function MultiTextChk(Data, MaxLen){
	if (Data.length > parseInt(MaxLen)){return false;}
	
	return true;
}
//----------------------------------------------------------------------
// プロシージャ名：JSChk
// 機能　　　　　：JavaScriptの有効チェック
//----------------------------------------------------------------------
function JSChk(){
	if (!(navigator.javaEnabled())){
		alert('JavaScriptを有効にしてください。');
	}
}
//----------------------------------------------------------------------
// プロシージャ名：WarekiChk
// 機能　　　　　：和暦の妥当性チェック
// 引数　　　　　：Gengo - 元号＜明治→0、大正→1、明治→2、平成→3＞
// 　　　　　　　：Year - 年
// 戻り値　　　　：（Boolean）
//----------------------------------------------------------------------
function WarekiChk(Gengo, Year){
	var upper;
	
	if (Gengo == "0"){
		//明治
		upper = 45;
	}else if(Gengo == "1"){
		//大正
		upper = 15;
	}else if(Gengo == "2"){
		//昭和
		upper = 64;
	}else if(Gengo == "3"){
		//平成
		upper = 64;
	}
	if (parseInt(Year) > upper){return false;}
	
	return true;
}