/*
-----------------------------------------------
	CSS-Crescent Web Site
	JavaScript Library
	2000/12/14
	CopyRight All CSS-Crescent Corp.
-----------------------------------------------
*/

//西暦年テーブル
var c = new Array(5);
c[0] = 18680908;
c[1] = 19120730;
c[2] = 19261225;
c[3] = 19890108;
c[4] = 99999999;

//和暦元号テーブル
var d= new Array(5);
d[0] = "明治" ;
d[1] = "大正" ;
d[2] = "昭和" ;
d[3] = "平成" ;
d[4] = " "

//ひらがな一覧テーブル
var sYomi = new Array(81)
sYomi[0] = "あ";
sYomi[1] = "い";
sYomi[2] = "う";
sYomi[3] = "え";
sYomi[4] = "お";
sYomi[5] = "か";
sYomi[6] = "き";
sYomi[7] = "く";
sYomi[8] = "け";
sYomi[9] = "こ";
sYomi[10] = "さ";
sYomi[11] = "し";
sYomi[12] = "す";
sYomi[13] = "せ";
sYomi[14] = "そ";
sYomi[15] = "た";
sYomi[16] = "ち";
sYomi[17] = "つ";
sYomi[18] = "て";
sYomi[19] = "と";
sYomi[20] = "な";
sYomi[21] = "に";
sYomi[22] = "ぬ";
sYomi[23] = "ね";
sYomi[24] = "の";
sYomi[25] = "は";
sYomi[26] = "ひ";
sYomi[27] = "ふ";
sYomi[28] = "へ";
sYomi[29] = "ほ";
sYomi[30] = "ま";
sYomi[31] = "み";
sYomi[32] = "む";
sYomi[33] = "め";
sYomi[34] = "も";
sYomi[35] = "や";
sYomi[36] = "ゆ";
sYomi[37] = "よ";
sYomi[38] = "ら";
sYomi[39] = "り";
sYomi[40] = "る";
sYomi[41] = "れ";
sYomi[42] = "ろ";
sYomi[43] = "わ";
sYomi[44] = "を";
sYomi[45] = "ん";
sYomi[46] = "が";
sYomi[47] = "ぎ";
sYomi[48] = "ぐ";
sYomi[49] = "げ";
sYomi[50] = "ご";
sYomi[51] = "ざ";
sYomi[52] = "じ";
sYomi[53] = "ず";
sYomi[54] = "ぜ";
sYomi[55] = "ぞ";
sYomi[56] = "だ";
sYomi[57] = "ぢ";
sYomi[58] = "づ";
sYomi[59] = "で";
sYomi[60] = "ど";
sYomi[61] = "ば";
sYomi[62] = "び";
sYomi[63] = "ぶ";
sYomi[64] = "べ";
sYomi[65] = "ぼ";
sYomi[66] = "ぱ";
sYomi[67] = "ぴ";
sYomi[68] = "ぷ";
sYomi[69] = "ぺ";
sYomi[70] = "ぽ";
sYomi[71] = "ー";
sYomi[72] = "っ";
sYomi[73] = "ゃ";
sYomi[74] = "ゅ";
sYomi[75] = "ょ";
sYomi[76] = "ぁ";
sYomi[77] = "ぃ";
sYomi[78] = "ぅ";
sYomi[79] = "ぇ";
sYomi[80] = "ぉ";
sYomi[81] = " ";
sYomi[82] = "　";

/********************************************************************
Name        :   Trim()
Function    : 	文字列の空白抜き
Synopsis    :  	Trim()
Input       :	str
Output      :	Not
Return      :  	空白を抜いた後のstr文字列
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function Trim(str) {
	var i;
	var S = str.length;
	var E = str.length;

	if (str == "") {
		return str;
	}

	for (i=0; i<=str.length - 1; i++) {
		if (str.substr(i,1) == " " || str.substr(i,1) == "　") {
			continue;
		}
		else {
			S = i;
			break;
		}
	}

	if (S == str.length) {
		return "";
	}

	for (i=str.length - 1; i>=0; i--) {
		if (str.substr(i,1) == " " || str.substr(i,1) == "　") {
			continue;
		}
		else {
			E = i;
			break;
		}
	}

	return str.substring(S,E+1);
}

/********************************************************************
Name        :   DecimalChk()
Function    : 	数値項目の文字列に数値以外の文字が入っていないことを
				チェックする
Synopsis    :  	DecimalChk()
Input       :	chkdata,ZeroBeforeFlg,FloatCnt,DoubleFlg,DecFlg
Output      :	Not
Return      :  	チェック正常:true
			:	チェック異常:false
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function DecimalChk(chkdata,ZeroBeforeFlg,FloatCnt,DoubleFlg,HexFlg)
{
	var work;			//ワークエリア

	//負数を許さない場合
	if ( ZeroBeforeFlg == false ) {
		//'-'があったらエラー
		if ( chkdata.indexOf("-") != -1 ) {
			return false;
		}
	}

	//小数点以下桁数を許さない場合
	if ( FloatCnt == 0 ) {
		if ( chkdata.indexOf(".") != -1 ) {
			return false;
		}
	}

	//浮動小数点を許さない場合
	if ( DoubleFlg == false ) {
		if ( chkdata.indexOf("E") != -1 ) {
			return false;
		}
		if ( chkdata.indexOf("e") != -1 ) {
			return false;
		}
	}

	//16進数を許さない場合
	if ( HexFlg == false ) {
		if ( chkdata.indexOf("X") != -1 ) {
			return false;
		}
		if ( chkdata.indexOf("x") != -1 ) {
			return false;
		}
	}

	//数値以外の文字がある場合はエラー
	if ( isNaN(chkdata) == true ) {
		return false;
	}

	return true;
}

/********************************************************************
Name        :   DecimalChk()
Function    : 	数値項目の文字列に数値以外の文字が入っていないことを
				チェックする
Synopsis    :  	DecimalChk()
Input       :	chkdata,ZeroBeforeFlg,FloatCnt,DoubleFlg,DecFlg
Output      :	Not
Return      :  	チェック正常:true
			:	チェック異常:false
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function DecimalChk2(chkdata,ZeroBeforeFlg,FloatCnt,DoubleFlg,HexFlg)
{
	var work;			//ワークエリア

	//負数を許さない場合
	if ( ZeroBeforeFlg == false ) {
		//'-'があったらエラー
		if ( chkdata.indexOf("-") != -1 ) {
			return false;
		}
	}

	//小数点以下桁数を許さない場合
	if ( FloatCnt == 0 ) {
		if ( chkdata.indexOf(".") != -1 ) {
			return false;
		}
	}

	//浮動小数点を許さない場合
	if ( DoubleFlg == false ) {
		if ( chkdata.indexOf("E") != -1 ) {
			return false;
		}
		if ( chkdata.indexOf("e") != -1 ) {
			return false;
		}
	}

	//16進数を許さない場合
	if ( HexFlg == false ) {
		if ( chkdata.indexOf("X") != -1 ) {
			return false;
		}
		if ( chkdata.indexOf("x") != -1 ) {
			return false;
		}
	}

	return true;
}


/********************************************************************
Name        :   getLength()
Function    : 	引数から与えられた文字列のバイト数を返す
Synopsis    :  	getLength()
Input       :	str
Output      :	Not
Return      :  	str文字列のバイト数
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function getLength(str) {
	var i, cnt = 0;

	for(i=0; i<str.length; i++) {
		if (escape(str.charAt(i)).length >= 4 ) {
			cnt+=2;
		}
		else {
			cnt++;
		}
	}
	return cnt;
}

/********************************************************************
Name        :   KanjiChk()
Function    : 	引数から与えられた文字列に全角文字があるかチェックする
Synopsis    :  	KanjiChk()
Input       :	str
Output      :	Not
Return      : 	文字列に全角文字がある場合:true
				文字列に全角文字がない場合:false
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function KanjiChk(str) {
	var i;

	for(i=0; i<str.length; i++) {
		if (!(escape(str.charAt(i)).length >= 4)) {
			return false;
		}
	}

	return true;
}

/********************************************************************
Name        :   HiraKanaChk()
Function    : 	引数から与えられた文字列にひらがな以外の文字がないか
				チェックする
Synopsis    :  	HiraKanaChk()
Input       :	str
Output      :	Not
Return      : 	文字列にひらがな文字以外のものがない場合:true
				文字列にひらがな文字以外のものがある場合:false
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function HiraKanaChk(str) {
	var cnt=0;
	var i=0;
	var okCnt = 0;
	var cstr = Trim(str);
	var slength = cstr.length;

	for (cnt=0; cnt<slength; cnt++ ) {
		for ( i=0; i<=82; i++ ) {
			if ( cstr.substr(cnt, 1) == sYomi[i] ) {
				okCnt = okCnt + 1;
			}
		}
	}

	if ( okCnt != slength ) {
		return false;
	}

	return true;
}

/********************************************************************
Name        :   EEChange()
Function    : 	和暦→西暦変換
Synopsis    :  	EEChange()
Input       :	gengobuf(元号文字列）
				nenbuf(西暦文字：EE)
Output      :	Not
Return      : 	西暦(YYYY)
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function EEChange(gengobuf, nenbuf, monthbuf, daybuf) {

	var buf = "";
	var gengo = gengobuf;
	var wk;
	var yyyy;
	var mmdd;
	var basedate;
	var area;

	basedate = "";
	if ( monthbuf.length < 2 ) {
		basedate = basedate + "0" + monthbuf; 
	}
	else {
		basedate = basedate + monthbuf; 
	}

	if ( daybuf.length < 2 ) {
		basedate = basedate + "0" + daybuf;
	}
	else {
		basedate = basedate + daybuf; 
	}

	for ( var num = 0; num < 5 ; num++) {
		if (gengo == d[num]) {
			yyyy = new String(c[num]);
			area = yyyy.substr(0, 4);
			yyyy = new Number(area);
			buf = (yyyy - 1) + eval(nenbuf);
			wk = new String(buf);
			wk = wk + basedate;
			//昭和元年前（19261224)はエラーにする
			if ( eval(wk) <= 19261224 ) {
				wk = "";			
			} 
			//昭和64の場合、平成になっていたらエラーにする
			else if ( eval(wk) >= 19890101 && eval(wk) <= 19890107 ) {
				if ( gengobuf == d[3] ) {
					wk = "";			
				}	
			}
			//昭和64年以上ならばエラーにする（平成でなければならない） 
			else if ( eval(wk) >= 19890108 && gengobuf == d[2] ) {
				wk = "";	
			} 
			return wk;	
		} 
	}

	wk = "";
	return wk;
}

/********************************************************************
Name        :   YYYYChange()
Function    : 	西暦→和暦変換
Synopsis    :  	YYYYChange()
Input       :	datebuf(YYYY）
Output      :	Not
Return      : 	和暦文字(GEEE)
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function YYYYChange(nenbuf, monthbuf, daybuf) {
	var ge = "";
	var ee;
	var eestr;
	var yyyy;
	var wk;
	var yyyy;
	var mmdd;
	var basedate;

	basedate = nenbuf;
	if ( monthbuf.length < 2 ) {
		basedate = basedate + "0" + monthbuf; 
	}
	else {
		basedate = basedate + monthbuf; 
	}

	if ( daybuf.length < 2 ) {
		basedate = basedate + "0" + daybuf;
	}
	else {
		basedate = basedate + daybuf; 
	}

	for ( var num = 0; num <=5 ; num++) {
		if ( c[num] <= eval(basedate) && c[num+1] >= eval(basedate) ) {
			ge = d[num];
			wk = new String(c[num]);
			yyyy = wk.substring(0, 4);
			ee = eval(nenbuf) - eval(yyyy) + 1;
			eestr = new String(ee);
			wk = ge + eestr + basedate.substr(4, 4);
		}
		else {
			wk = "";
		}
	}

	return wk;
}

/********************************************************************
Name        :   EEDateChk()
Function    : 	和暦日付チェック
Synopsis    :  	EEDateChk()
Input       :	datebuf(和暦文字:EEMMDD)
Output      :	Not
Return      : 	チェック正常：	True
			: 	チェック異常：	False
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function EEDateChk(datebuf) {
    var strdate
	var ret

	strdate = YYYYChange(datebuf)
	ret = DateChk(strdate)
	if ( ret != true ) {
		return false;
	}

	return true;
}

/********************************************************************
Name        :   DateChk()
Function    : 	西暦日付チェック処理
Synopsis    :  	DateChk()
Input       :	datebuf(西暦文字:YYYYMMDD)
Output      :	Not
Return      : 	チェック正常：	True
			: 	チェック異常：	False
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function DateChk(datebuf) {
	var Year;								//ユーザ入力日（年）
	var Month;								//ユーザ入力日（月）
	var Day;								//ユーザ入力日（日）
	var day_of_month_table;					//月末日配列

	//月別月末日を配列にセット！！
	day_of_month_table = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

	//引数チェック
	if ( Trim(datebuf) == "" ) {
		return false;
	}

	//年・月・日の取得
	Year = datebuf.substr(0, 4);
	Month = datebuf.substr(4, 2);
	Day = datebuf.substr(6, 2);

	//月のチェック
	if ( 0 >= Month || Month >=13 ) {
		//エラー
		return false;
	}
	//日のチェック
	if ( 0 >= Day || Day >=32 ) {
		//エラー
		return false;
	}

	//月＆日＆閏年チェック
	if (Month == 2) {
		//閏年か
		if (((Year % 4 == 0) && (Year % 100 != 0)) || (Year % 400 == 0)) {
			//閏年なので、２月は２９日より大きい値が入力されているかチェック
			if ( Day > day_of_month_table[Month-1] + 1 ) {
				//エラー
				return false;
			}
		}
		else {
			//閏年ではない！！通常チェックと同じ
			if ( Day > day_of_month_table[Month-1] ) {
				//エラー
				return false;
			}
		}
	}
	else if ( Day > day_of_month_table[Month-1] ) {
		//エラー
		return false;
	}

	//チェック正常
	return true;
}

/********************************************************************
Name        :   NenreiGet()
Function    : 	年齢算出処理
Synopsis    :  	NenreiGet()
Input       :	基準年,基準月,基準日,誕生年,誕生月,誕生日
Output      :	Not
Return      : 	保険年齢
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function NenreiGet(p_CreateYear, p_CreateMon, p_CreateDay, p_BirthYear, p_BirthMon, p_BirthDay) {
    var BaseDayStr = "";
    var BaseDayLng = 0;
    var BirthdayStr = "";
    var BirthdayLng = 0;
    var DateLng = 0;
	var cnt,i=0;
	var ZeroIns = "";
	var strBuf = "";

	//基準日編集
	BaseDayStr = p_CreateYear;
	strBuf = new String(p_CreateMon);
	if ( strBuf.length < 2 ) {
		BaseDayStr = BaseDayStr + "0" + p_CreateMon;
	}
	else {
		BaseDayStr = BaseDayStr + p_CreateMon;
	}
	strBuf = "";
	strBuf = new String(p_CreateDay);
	if ( strBuf.length < 2 ) {
		BaseDayStr = BaseDayStr + "0" + p_CreateDay;
	}
	else {
		BaseDayStr = BaseDayStr + p_CreateDay;
	}
	BaseDayLng = eval(BaseDayStr);

	//誕生日編集
	BirthdayStr = p_BirthYear;
	if ( p_BirthMon.length < 2 ) {
		BirthdayStr = BirthdayStr + "0" + p_BirthMon;
	}
	else {
		BirthdayStr = BirthdayStr + p_BirthMon;
	}
	if ( p_BirthDay.length < 2 ) {
		BirthdayStr = BirthdayStr + "0" + p_BirthDay;
	}
	else {
		BirthdayStr = BirthdayStr + p_BirthDay;
	}
	BirthdayLng = eval(BirthdayStr);

	//年齢算出
	DateLng = BaseDayLng - BirthdayLng;
	var DateStr = new String(DateLng);
	if ( DateLng < 10000000 ) {
		for (i=0; i < 8 - DateStr.length; i++) {
			ZeroIns = ZeroIns + "0"
		}
		DateStr = ZeroIns + DateStr;
	}

	strBuf = DateStr.substr(0, 4);
	var NumBuf = new Number(strBuf);
	return NumBuf;
}

/********************************************************************
Function    : 	ChangeIME()
Synopsis    :  	IMEモードを変換する
Input       :	obj:　現在のコントロールオブジェクト
				mode:　変更するIMEモード
Output      :	Not
Return      : 	Not
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function ChangeIME(obj, mode) {
	obj.style.imeMode = mode;
}

/********************************************************************
Function    : 	onMouse()
Synopsis    :  	オブジェクトにマウスが乗った場合色を変える
Input       :	obj:　現在のコントロールオブジェクト
				color:　変更する色
Output      :	Not
Return      : 	Not
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function onMouse(obj, color) {
	obj.style.backgroundColor = color;
}

/********************************************************************
Function    : 	F_location()
Synopsis    :   HTMLファイルをLocationする
Input       :	target:　ターゲットフレーム
				url:　LocationするURL
Output      :	Not
Return      : 	Not
Ref Table   :	Not
History     :   Create-Date 2000.09.18  新規作成
********************************************************************/
function F_location(target, url) {
	if (target == "_top" ) {
		top.document.location.href = url;
	}
	else {
		top.bottom.location.href = url;
	}
}


