//*************************************************
//FileName
//	js_include.js

//Function
//	1)	入力された年号、日付のチェック
//	2)	リンク画像のスワッピング関数

//Arge
	

//Date
//	2002/02/18
//	2003/04/09	oomura	年チェック　平成以降対応
//						うるう年チェックを別出し関数にした
//*************************************************
//元号と開始日、終了日を取得
		var strG;
		var strG_2;
		var dateS;
		var dateE;
		var endY;
//年チェック 間違っていたら"-1"を返す あってたら西暦を返す
//選択された元号と年の整合性をチェック
//datecheckから呼ばれる
function yearCheck(era,Y){
	var str=hankakuCheck(Y);
	if(Y == 0){		//年が0以下だったらエラー
		alert("年の入力が間違っています");
		str = -1;
	}
	if(str!=-1){
//		var strG;
//		var strG_2;
		var cnt;	// ":"の始まる番号
		var cnt2;	// "|"の始まる番号
		var cnt_d;//"|"の始まる番号（日付用）
		var cnt_d2;//":"の始まる番号(日付用)
		var ys;		//開始年
		var period;	//期間（年）
		var yomi;	//年号ヨミ
		var flg;
		flg = 1
		
		strG=document.forms[0].hidGENGO.value;
		strG_2 = document.forms[0].hidGENGO_2.value;
		
		while(strG.length>0&&flg>0){
			cnt = strG.indexOf(":");		//年号ヨミまでの文字数（開始年/年号ヨミ:)
			cnt2 = strG.indexOf("|");
			cnt_d = strG_2.indexOf("|");
			cnt_d2 = strG_2.indexOf(":");
			yomi = strG.substr(5,cnt-5);	//年号ヨミの切り取り
			if(era == yomi){								//該当年号だったら
				flg = 0;
				ys = eval(strG.substr(0,4));				//開始年の取得
				if(cnt2!=cnt+1){				//終了年が存在したら（現在の年号ではない）
					period = eval(strG.substr(cnt+1,4))-ys+1;	//期間の取得
					if(Y> period||Y<0){				//
						alert("年の入力が間違っています");
						str=-1;
					}else{
						str=ys-1+eval(str);
						dateS = strG_2.substr(0,cnt_d2);
						dateE = strG_2.substring(cnt_d2+1,cnt_d);
						endY = period;
//alert("dateE = "+dateE);
//alert("endY="+endY);
//alert("始まりの日" + dateS);
//alert("おわりの日" + dateE);
					}
				}else{							//現在の元号だったら
					if(Y<1){
						alert("年の入力が間違っています");
						str=-1;
					}else{
						str	= ys -1 + eval(str);
						dateS = strG_2.substr(0,10);
						dateE = "9999/99/99"
						endY = "99";
					}
//alert("始まりの日だけ" + dateS);
				}
			}
			strG = strG.substr(cnt2+1,strG.length-cnt2);		//次の年号期間の頭出し
			strG_2 = strG_2.substr(cnt_d+1,strG_2.length-cnt_d);
//alert("頭だし" + strG_2);
		}// While文の終了
	}//	if文の終了
	return str;
}
//月チェック 間違っていたら"-1"を返す
function monthCheck(M){
	var str=hankakuCheck(M);
	if(str!=-1){
		if (M < 1 || M > 12){
			alert("月の入力が間違っています");
			str=-1;
		}
	}
	if(str>0&&str<10){str = "0" + eval(str);}
	return str;
}
//日付チェック 間違っていたら"-1"を返す
//入力された月と日の整合性をチェック
//function dayCheck(E,Y,M,D){
function dayCheck(E,YYYY,M,D){
	var str = hankakuCheck(D);
	if (str!=-1 && YYYY != -1){
		if(M==1||M==3||M==5||M==7||M==8||M==10||M==12){
			if(D<=0||D>31){
				alert("日の入力が間違っています");
				str=-1;
			}
		}else if(M==4||M==6||M==9||M==11){
			if(D<=0||D>30){
				alert("日の入力が間違っています");
				str=-1;
			}
		}else if(M==2){
			var U;	//閏年だったらtrue
			U = leapyear(YYYY);
			if((U==true&&(D<=0||D>29))||(U==false&&(D<=0||D>28))){
				alert("日の入力が間違っています");
				str=-1;
			}
		}
	}
	if(str>0&&str<10){
		str = "0" + eval(str);
	}
	return str;
}			
//半角数字チェック 間違っていたら"-1"を返す
function hankakuCheck(T){
	var i;
	var c;
	for (i=0;i<T.length;i++){
		c = T.charAt(i);
		if ("0123456789".indexOf(c,0) < 0){
//			alert("日付欄には半角数字のみを入力してください");
			T = -1;
		}
	}
	return T;
}
//年月日(自)チェック 間違っていると"-1"を返す 正しいとyyyy/mm/ddを返す
//Convert_Date(){js_SE.js}、kensaku(){js_DR.js}から呼ばれる
function dateCheck(E,Y,M,D){
	var str1 = "0000/00/00";
	var str2;
	var str3;
	var YYYY;
	//年月日判定（S）		年が入力されている
	if (Y!="yy"){
		if(Y.length==1){Y = "0" + Y;}
		str1=yearCheck(E,Y);
		YYYY = str1;
		if(str1!=-1){	//年の入力が正しい
			//月が入力されている
			if(M!="mm"){
				if(M.length==1){M = "0"+M;}
				str2=monthCheck(M);
				if(str2!=-1){	//月の入力が正しい
					str1=str1+"/"+str2;
					//日が入力されている
					if(D!="dd"){
						if(D.length==1){D = "0"+D;}
						str3=dayCheck(E,YYYY,M,D);
						if(str3!=-1){				//日の入力が正しい
							//元年かつ、開始月・開始日以前
							if(Y=="01"&&M<dateS.substr(5,2)){
								str1 = -1;
								alert("日の入力が間違っています");
							}else if(Y=="01"&&M==dateS.substr(5,2)&&D<dateS.substr(8,2)){
								str1 = -1;
								alert("日の入力が間違っています");
							}else if(Y==endY&&M>dateE.substr(5,2)){
								str1=-1;
								alert("日の入力が間違っています");
							}else if(Y==endY&&M==dateE.substr(5,2)&&D>dateE.substr(8,2)){
								str1=-1;
								alert("日の入力が間違っています");
							}else{
								str1=str1+"/"+str3;
							}
						}else{str1=-1;}				//日の入力が間違ってる
					}else{//日が入力されていない
						if(Y>"01"&&Y<endY){
							str1 = str1 + "/01";
						}else if(Y=="01"&&M==dateS.substr(5,2)){
							str1 = str1 + dateS.substr(7,3)
						}else if(Y=="01"&&M>dateS.substr(5,2)){
							str1 = str1 + "/01";
						}else if(Y==endY&&M<=dateE.substr(5,2)){
							str1 = str1 + "/01";
//alert("1");
						}else{
//alert("2");
							str1 = -1;
							alert("月の入力が間違っています");
						}
					}	
				}else{str1=-1;}	//月の入力が間違ってる
			}else{	//月が入力されていない
				//月が入力されていないのに日が入力されている
				if(D!="dd"){
					alert("月を入力してください");
					str1=-1;
				//月、日いずれも入力されていない
				}else{
					if(Y=="01"){
						str1 = str1 + dateS.substr(4,10);
					}else{
						str1 = str1 + "/01/01";
					}
				}
			}
		}
	}else{	//年が入力されていない
		//年が入力されていないのに、月又は日が入力されている
		if(M!="mm"||D!="dd"){
			alert("年を入力してください");
			str1=-1;
		}
	}	//年月日入力判定終了
	return str1;
}

//年月日(至)チェック 間違っていると"-1"を返す 正しいとyyyy/mm/ddを返す
//Convert_Date(){js_SE.js}、kensaku(){js_DR.js}から呼ばれる
function dateCheckE(E,Y,M,D){
	var str1 = "0000/00/00";
	var str2;
	var str3;
	var YYYY;
	//年月日判定（S）		年が入力されている
	if (Y!="yy"){
		if(Y.length==1){Y = "0"+Y;}
		str1=yearCheck(E,Y);
		YYYY=str1;
		if(str1!=-1){	//年の入力が正しい
			//月が入力されている
			if(M!="mm"){
				if(M.length==1){M="0"+M;}
				str2=monthCheck(M);
				if(str2!=-1){	//月の入力が正しい
					str1=str1+"/"+str2;
					//日が入力されている
					if(D!="dd"){
						if(D.length==1){D="0"+D;}
						str3=dayCheck(E,YYYY,M,D);
						if(str3!=-1){				//日の入力が正しい
							if(Y==endY&&M>dateE.substr(5,2)){
								str1 = -1;
								alert("日の入力が間違っています");
							}else if(Y==endY&&M==dateE.substr(5,2)&&D>dateE.substr(8,2)){
								str1 = -1;
								alert("日の入力が間違っています");
							}else if(Y=="01"&&M<dateS.substr(5,2)){
								str1 = -1;
								alert("日の入力が間違っています");
							}else if(Y=="01"&&M==dateS.substr(5,2)&&D<dateS.substr(8,2)){
								str1 = -1;
								alert("日の入力が間違っています");
							}else{
								str1=str1+"/"+str3;
							}
						}else{str1=-1;}				//日の入力が間違ってる
					}else{
						if(Y==endY&&M>dateE.substr(5,2)){
							str1 = -1;
							alert("月の入力が間違っています");
						}else if(Y==endY&&M==dateE.substr(5,2)){
							str1 = str1 + dateE.substr(7,3)
						}else if(Y=="01"&&M<dateS.substr(5,2)){
							str1 = -1;
							alert("月の入力が間違っています");
						}else{
							if(M==1||M==3||M==5||M==7||M==8||M==10||M==12){
								str1 = str1 + "/31";
							}else if(M==4||M==6||M==9||M==11){
								str1 = str1 + "/30";
							}else if(M==2){
								var U;	//閏年だったらtrue
								U = leapyear(YYYY);
								if(U==true){
									str1 = str1 + "/29";
								}else{
									str1 = str1 + "/28";
								}
							}
						}
					}	//日が入力されていない
				}else{str1=-1;}	//月の入力が間違ってる
			}else{	//月が入力されていない
				//月が入力されていないのに日が入力されている
				if(D!="dd"){
					alert("月を入力してください");
					str1=-1;
				//月、日いずれも入力されていない
				}else{
					if(Y==endY){
						str1 = str1 + dateE.substr(4,10);
					}else{
						str1 = str1 + "/12/31";
					}
				}
			}
		}
	}else{	//年が入力されていない
		//年が入力されていないのに、月又は日が入力されている
		if(M!="mm"||D!="dd"){
			alert("年を入力してください");
			str1=-1;
		}
	}	//年月日入力判定終了
	return str1;
}
//うるう年チェック 戻り値　True/False
function leapyear(YYYY){
	if(YYYY%4==0){
		if (YYYY%100==0){
			if(YYYY%400==0){return true;}else{return false;}
		}else{
			return true;
		}
	}else{
		return false;
	}
}
//全角数字を半角数字にする
function zhchange(string) {
	var org = string;
	var conv = "";
	var diff = "０".charCodeAt(0) - "0".charCodeAt(0);
	var ch;
	for(i=0;i<org.length;i++){
		ch = org.charAt(i);
		if(ch >= '０' && ch <= '９'){
			conv += String.fromCharCode(ch.charCodeAt(0) - diff);
		}else if(ch >= '0' && ch <= '9'){
			conv += ch;
		}else{
			conv = -1;
			alert("日付欄には半角数字を入れてください");
			return conv;
		}
	}
	return conv;
}
//画がかわる
function HpbImgSwap(imgName, imgSrc)
{
  var appVer=parseInt(navigator.appVersion);
  var isNC=(document.layers && (appVer >= 4));
  var isIE=(document.all    && (appVer >= 4));
  if (isNC || isIE)
  {
    if (document.images)
    {
      var img = document.images[imgName];
      if (!img) img = HpbImgFind(document, imgName);
      if (img) img.src = imgSrc;
    }
  }
}
//半角英数字に変換		2003/04/09時点での使用なし
function hanA1check(string){
	var org = string;
	var conv = "";
	var diff0 = "０".charCodeAt(0) - "0".charCodeAt(0);
	var diffA = "Ａ".charCodeAt(0) - "A".charCodeAt(0);
	var diffa = "ａ".charCodeAt(0) - "a".charCodeAt(0);
	var ch;
	for(i = 0; i < org.length; i++) {
		ch = org.charAt(i);
		if(ch >= '0' && ch <= '9'){			//半角数字
			conv += ch;
		}else if(ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z'){
			conv += ch;
		}else if(ch >= 'Ａ' && ch <= 'Ｚ'){
			conv += String.fromCharCode(ch.charCodeAt(0) - diffA);
		}else if(ch >= 'ａ' && ch <= 'ｚ'){
			conv += String.fromCharCode(ch.charCodeAt(0) - diffa);
		}else if(ch >= '０' && ch <= '９'){
			conv += String.fromCharCode(ch.charCodeAt(0) - diff0);
		}else{
			conv = -1;
			alert("英数字を入力してください");
			return conv;
		//conv += ch;
		}
	}
	return conv;
}

