/*
*	Java Script CoCoLib
* 以下、削除および変更禁止 ------------------------------------------
*
*		-- Copyright(C) 2003 Right by CoCoPa --
*		-- 		Mail : coco@jbms.info
*		-- 		URL  : http://www.jbms.info/coco/
*
*		-- IE-5.0 / NN-6.0
*		-- It can be used above --
*		-- 24/01-2003 --
*
*		-- Following history ->
*				23/05-2003	Function "strRuleChk" It added.
* -------------------------------------------------------------------
*/


/*	-- This Function is A display of a calendar  --
*	--		23/06-2003
*/
// #
// ## カレンダー表示用ファンクション ##
// #

	function ShowCalen(tY, tM){
	/* 初期設定 */
		var cOL1_1 = "#626231";	// 年号文字色
		var cOL1_2 = "#F1F1E4";	// 年号枠ＢＧ色
		var cOL2_1 = "#333366";	// 曜日文字色
		var cOL2_2 = "#EAEAF4";	// 曜日ＢＧ色
		var cOL3_1 = "#000080";	// 日付文字色
		var cOL3_2 = "#ECECFF";	// 日付ＢＧ色

		var tDcOL1 = "border:1px solid "+cOL1_1+"\; background-color: "+cOL1_2+"\; color: "+cOL1_1+"\;";
		var tDcOL2 = "border:1px solid "+cOL2_1+"\; background-color: "+cOL2_2+"\; color: "+cOL2_1+"\;";
		var tDcOL3 = "\;border:1px solid "+cOL3_1+"\; background:"+cOL3_2+"\; cursor:hand\;";


	/* 本日の日付取得 */
  		if(tY || tM){ var tD = 1; } else { var tD = (new Date()).getDate(); ;}
		if(!tY){ var tY = (new Date()).getFullYear(); }
  		if(!tM){ var tM = (new Date()).getMonth(); }
  		var date=new Date(tY, tM, tD);

	/* 月別最終日の配列 */
  		var Monthdays=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	/* 曜日の配列 */
		var Days=new Array("日","月","火","水","木","金","土");
		Days = Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
	/* 年号セット */
		year = tY;
	/* 日付セット */
		today = tD;
	/* 閏年の分岐 */
		if(((year%4==0)&&(year%100!=0))||(year%400==0)){
			Monthdays[1]=29;
		}
	/* 今月の最終日セット */
		thisMonthDays = Monthdays[date.getMonth()];

		date.setDate(1);
		Startday=date.getDay();

	/* 年・月の表示 */
		document.write("<FORM NAME=\"MyCal\" ACTION=\"\">\n");
		document.write("<TABLE BORDER=\"0\">\n");
		document.write("<TR><TD ALIGN=\"CENTER\"></TD>\n");
		document.write("<TD COLSPAN=5 ALIGN=\"CENTER\" STYLE=\""+tDcOL1+"\">");
		document.write(year,'年', tM+1,'月');
		document.write("</TD>\n<TD ALIGN=\"CENTER\"><A HREF=\"\"></A>");
		document.write("<INPUT TYPE=\"HIDDEN\" NAME=\"Next\" VALUE=\"\">");
		document.write("</TD>\n</TR>\n");

	/* 曜日の表示 */
		document.write("<TR>\n");
		for(i=0;i<7;i++){
			/* 曜日別色指定 */
			switch(i){
				case 0 :
					fCol = "Red" ;
					break ;
				case 6 :
					fCol = "Blue" ;
					break ;
				default :
					fCol = "" ;
					break ;
			}
			document.write("<TD WIDTH=\"28\" STYLE=\""+tDcOL2+"color:"+ fCol +"\" ALIGN=\"CENTER\">",Days[i],"</TD>\n");
		}

		document.write("</TR>");
		document.write("<TR>\n");

		cnt=0;
		for(i=0;i<Startday;i++){
			document.write("<TD></TD>\n");
			cnt++;
		}

		for(i=1;i<=thisMonthDays;i++){
			nOWdAY = i ;	// 現在表示日付のセット
			bName = "BD" + i ;
			if(nOWdAY<10){
				nOWdAY = " " + nOWdAY ;
			}
			/* 曜日別色指定 */
			switch(cnt){
				case 0 :
					fCol = "Red" ;
					break ;
				case 6 :
					fCol = "Blue" ;
					break ;
				default :
					fCol = "" ;
					break ;
			}

			document.write("<TD align=\"center\">");
			document.write("<INPUT TYPE=\"button\" NAME=\"" + bName + "\" VALUE=\"" + nOWdAY + "\" STYLE=\""+tDcOL3+"color:"+fCol+"\"></TD>\n");
			/* 本日のオブジェクト*/
			if(i == tD){
				JustD = bName ;
			}
			cnt++;
			if(cnt==7){
				document.write("</TR>\n");
				cnt=0;
			}
		}
		document.write("</TABLE>\n</FORM>\n");
		/* フォーカス移動 */
		document.MyCal.elements[JustD].focus();
	}



/*	-- This Function checks an input rule  --
*	--		23/05-2003
*/
// #
// ## 入力規則チェック用ファンクション ##
// #
	function strRuleChk(STR, RULE){
		var ErrStr = "" ;
		var ErrHD = " ： " ;
		switch (RULE) {
			case "1":	// 半角アルファベットのみ許可
				if(!STR.match(/^[a-zA-Z]+$/)){
					ErrStr = "半角アルファベット" ;
				}
				break ;

			case "2":	// 半角数字のみ許可
				if(!STR.match(/^[0-9]+$/)){
					ErrStr = "半角数字" ;
				}
				break ;

			case "3":	// 半角英数字のみ許可
				if(!STR.match(/^[a-zA-Z0-9]+$/)){
					ErrStr = "半角英数字" ;
				}
				break ;

			case "4":	// 半角英数字 + "." "@" "_" "-"のみ許可
				if(!STR.match(/^[a-zA-Z0-9\.@_-]+$/)){
					ErrStr = "半角英数字" ;
				}
				break ;

			default:
				break ;
		}
		if(ErrStr){
			ErrStr = ErrHD + ErrStr + "のみ入力可能です。\n" ;
			return ErrStr ;
		} else {
			return false ;
		}
	}	// End of function



/*	-- This Function is input check system for this form --
*			24/01-2003	CHECKBOX の同種番号の消去を追加
*			23/05-2003	入力規則チェックの追加
*/
// #
// ## 未入力チェック用ファンクション ##
// #
	function InpChk(INPUT){
		/* エラーメッセージのローカル変数設定 */
			var errMsg = "以下の必須項目を確認してください！\n\n";		/* 自由に文字を挿入 */
			var empObj = "" ;		/* 未入力フォームオブジェクト変数宣言 */
			var ErHead = "◎  ";	/* ヘッダー：エラーメッセージ付加用文 */
			var errSwc = "" ;		/* フッター：エラーメッセージ付加用文 */

		/* エラー用配列の生成 */
			var Err = new Array() ;
			var ErrChk = new Array() ;

		/* INUPオブジェクトのループ */
		for (i = 0; i < INPUT.length; i++){
			/* オブジェクト[ID]設定確認 */
			if(INPUT.elements[i].id){
				/* ID の分解 */
				elId_array = INPUT.elements[i].id.split(",", 2) ;
				if(elId = elId_array[0]){
					elName = INPUT.elements[i].name ;		/* エレメント名宣言 */
				/* INPUT TYPE 別分岐 */
					switch (INPUT.elements[i].type) {
						case "text":
							if(!INPUT.elements[i].value || INPUT.elements[i].value == " "){
								errSwc = " が未入力です。\n" ;
								Err[elName] = ErHead + elId + errSwc ;
							}
							break ;
						case "radio":
								if(!INPUT.elements[i].checked && ErrChk[elName]!="True"){
										errSwc = " を選択してください。\n" ;
										Err[elName] = ErHead + elId + errSwc ;
								} else {
									Err[elName] = "" ;
									ErrChk[elName] = "True" ;
								}
							break ;
						case "checkbox":
								elName = elName.replace(/_.*/, "") ;	/* 同種チェックボックスの番号消去 */
								if(!INPUT.elements[i].checked && ErrChk[elName]!="True"){
										errSwc = " を選択してください。\n" ;
										Err[elName] = ErHead + elId + errSwc ;
								} else {
									Err[elName] = "" ;
									ErrChk[elName] = "True" ;
								}
							break ;
						default:
							if(!INPUT.elements[i].value){
								errSwc = " が未入力です。\n" ;
								Err[elName] = ErHead + elId + errSwc ;
							}
						break;
					}	// end of switch
				}
			/* 未入力違反がない場合に入力規則チェック */
				if(!Err[elName] && elId_array[1] && INPUT.elements[i].value){
					STR = INPUT.elements[i].value ;
					RULE = elId_array[1] ;
					errSwc = strRuleChk(STR, RULE) ;
					if(errSwc){
						Err[elName] = ErHead + elId + errSwc ;
					}
				}
			}
		}

		/* エラーがある場合にアラート表示 */
		for (i in Err) {
			empObj += Err[i] ;
		}
		if(empObj){
			alert(errMsg+empObj) ;
			return false ;
		} else {
			return true ;
		}
	}	// End of function


// #
// ## カウンター表示用ファンクション ##
// #
	/*
	*	time :: カウント時間(分)
	*	com  :: カウンター前に表示するコメント
	*/
	function set_logout(time, com){
		var Styl = "STYLE=\"border-left:1px solid #FFFFFF;" ;
		Styl += "border-right:1px solid #FFFFFF;" ;
		Styl += "border-top:1px solid #FFFFFF;" ;
		Styl += "border-bottom:1px solid #FFFFFF; " ;
		Styl += "color :#66B3FF;\"" ;

		document.write("<FORM NAME=\"COUNTER\" "+Styl+">"+com+"<INPUT TYPE=\"text\" NAME=\"COUNTER_BOX\" SIZE=10 "+Styl+"></FORM>");
		get_logout(time) ;
	}
	function get_logout(OutTime, st){
		if(!st){ st = "00" ; }
		document.COUNTER.COUNTER_BOX.value = OutTime + "分 " + st +"秒";
		if(st=="00"){
			st = 60 ;
			OutTime = (OutTime - 1) ;
		}
		st = (st - 1) ;
		if(OutTime >= 0){
			setTimeout("get_logout("+OutTime+","+st+")", 1000) ;
		}
	}


// #
// ## 入力用 Window オープン用ファンクション ##
// #

	function OpenWindow(WI, HE, FL){
		var leftwid = (window.screen.availWidth/2)-(WI/2) ;
		if(FL){var FL = FL ;}else{var FL = "" ;}
		Stl = "scrollbars=no,";			/* スクロールバー */
		Stl += "toolbar=no,";			/* ツールバー */
		Stl += "menubar=no,";			/* メニューバー */
		Stl += "resizable=no,";			/* リサイズ */
		Stl += "status=no,";			/* ステータスバー */
		Stl += "width="+WI+",";			/* ウィンドウの横幅 */
		Stl += "height="+HE+",";		/* ウィンドウの高さ */
		Stl += "top=80,";				/* ウィンドウの位置(上から) */
		Stl += "left="+leftwid;			/* ウィンドウの位置(左から) */

		loadwin = window.open(FL, "new", Stl);
		loadwin.focus();
	}

	function checkdate( year, mon, day ) {
		maxDayOfMonth = Array( 31,29,31,30,31,30,31,31,30,31,30,31 );
		if( mon < 1 || mon > 12 )						{ return -2; }
		if( day < 1 || day > maxDayOfMonth[mon-1] )		{ return -3; }
		if( mon != 2 )									{ return 0;  }
		if( day < 29 )									{ return 0;  }
		if( ( year % 4 ) == 0 && ( year % 100 ) != 0 )	{ return 0;  }
		if( ( year % 400 ) == 0 )						{ return 0;  }
		return -1;
	}

	function xDay(y,m,d) {
		today = new Date();
		xday  = new Date(y,m-1,d);
		dayMS = 24*60*60*1000;
		n = Math.floor((xday.getTime()-today.getTime())/dayMS)+1;

		return(n);
	}

	function checkdate2(year)
	{
		flag = false;
		if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) flag = true;
//		if (flag) alert(y+"年は閏年です"); else alert(y+"年は閏年ではありません");
		return flag;
	}

	function addSearch(){
		var post1 = document.all.zip1.value;
		var post2 = document.all.zip2.value;

		if(post1 == "") {
			alert("郵便番号を入力してください");
			return false;
		}

		var iframe;
		iframe = document.all.pef_mk;
		var prm = "?post1="+post1+"&post2="+post2;
		str = "<IFRAME src='common/addsearch.jsp" + prm + "' name='term' width='0' height='0' marginheight='0'></IFRAME>";
		iframe.innerHTML = str;
	}

	function encodeURL(str){
		var s0, i, s, u;

		s0 = "";							// encoded str

		for (i = 0; i < str.length; i++){	// scan the source
			s = str.charAt(i);

			u = str.charCodeAt(i);			// get unicode of the char

			if (s == " "){s0 += "+";}		// SP should be converted to "+"
			else {
											// check for escape
				if ( u == 0x2a || u == 0x2d || u == 0x2e || u == 0x5f || ((u >= 0x30) && (u <= 0x39)) || ((u >= 0x41) && (u <= 0x5a)) || ((u >= 0x61) && (u <= 0x7a))){
					s0 = s0 + s;			// don't escape
				}
				else {						// escape
											// single byte format
					if ((u >= 0x0) && (u <= 0x7f)){
						s = "0"+u.toString(16);
						s0 += "%"+ s.substr(s.length-2);
					}
											// quaternary byte format (extended)
					else if (u > 0x1fffff){
						s0 += "%" + (oxf0 + ((u & 0x1c0000) >> 18)).toString(16);
						s0 += "%" + (0x80 + ((u & 0x3f000) >> 12)).toString(16);
						s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
						s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
					}
											// triple byte format
					else if (u > 0x7ff){
						s0 += "%" + (0xe0 + ((u & 0xf000) >> 12)).toString(16);
						s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
						s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
					}
											// double byte format
					else {
						s0 += "%" + (0xc0 + ((u & 0x7c0) >> 6)).toString(16);
						s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
					}
				}
			}
		}
		return s0;
	}

	function decodeURL(str){
		var s0, i, j, s, ss, u, n, f;

		s0 = "";							// decoded str

		for (i = 0; i < str.length; i++){	// scan the source str
			s = str.charAt(i);

			if (s == "+"){s0 += " ";}		// "+" should be changed to SP
			else {
				if (s != "%"){s0 += s;}		// add an unescaped char
				else{						// escape sequence decoding
					u = 0;					// unicode of the character
					f = 1;					// escape flag, zero means end of this sequence
					while (true) {
						ss = "";			// local str to parse as int
											// get two maximum hex characters for parse
						for (j = 0; j < 2; j++ ) {
							sss = str.charAt(++i);
							if (((sss >= "0") && (sss <= "9")) || ((sss >= "a") && (sss <= "f"))  || ((sss >= "A") && (sss <= "F"))) {
											// if hex, add the hex character
								ss += sss;
											// not a hex char., exit the loop
							} else {--i; break;}
						}
											// parse the hex str as byte
						n = parseInt(ss, 16);
											// single byte format
						if (n <= 0x7f){u = n; f = 1;}
											// double byte format
						if ((n >= 0xc0) && (n <= 0xdf)){u = n & 0x1f; f = 2;}
											// triple byte format
						if ((n >= 0xe0) && (n <= 0xef)){u = n & 0x0f; f = 3;}
											// quaternary byte format (extended)
						if ((n >= 0xf0) && (n <= 0xf7)){u = n & 0x07; f = 4;}
											// not a first, shift and add 6 lower bits
						if ((n >= 0x80) && (n <= 0xbf)){u = (u << 6) + (n & 0x3f); --f;}
											// end of the utf byte sequence
						if (f <= 1){break;}
											// test for the next shift byte
						if (str.charAt(i + 1) == "%"){ i++ ;}
											// abnormal, format error
						else {break;}
					}
						// add the escaped character
					s0 += String.fromCharCode(u);
				}
			}
		}
		return s0;
	}

	//-------------------------------------------------------------------------------
	//　一時的にCookieを使用するための関数
	//　成功した時はtrue,失敗した時はfalseを返す
	//-------------------------------------------------------------------------------
	function tempCookie(theName__,theValue__)
	{
		if ((theName__ != null) && (theValue__ != null))
		{
			document.cookie = theName__ + "="+theValue__;
			return true;
		}
		return false;
	}

	//　Cookieにデータを保存する
	//　成功した時はtrue,失敗した時はfalseを返す
	function setCookie(theName__,theValue__,theDay__)
	{
		return tempCookie(theName__,theValue__);

//		if ((theName__ != null) && (theValue__ != null))
//		{
//			var expDay__ = "Wed, 01 Jan 2020 18:56:35 GMT";	//　指定されない場合とりあえず2020年
//			if (theDay__ != null)
//			{
//				theDay__ = eval(theDay__);	//　文字列の場合でも数値にする（念のため）
//				var setDay = new Date();
//				setDay.setTime(setDay.getTime()+(theDay__*1000*60*60*24));
//				expDay__ = setDay.toGMTString();
//			}
//			document.cookie = theName__ + "="+escape(theValue__)+";expires="+expDay__;
//			return true;
//		}
//		return false;
	}

	//-------------------------------------------------------------------------------
	//　Cookieのデータを削除する（即座にファイルから消える訳じゃありません）
	//　常にtrueを返す
	//-------------------------------------------------------------------------------
	function deleteCookie(theName__)
	{
		document.cookie = theName__ + "=;expires=Thu,01-Jan-70 00:00:01 GMT";
		return true;
	}

	//-------------------------------------------------------------------------------
	//　Cookieから指定されたデータを抜きだす
	//　成功した時はnull以外,失敗した時はfalseを返す
	//-------------------------------------------------------------------------------
	function getCookie(theName__)
	{
		theName__ += "=";	//　=を追加して検索の手抜きをする
		theCookie__ = document.cookie+";";	//　検索時最終項目で-1になるのを防ぐ
		start__ = theCookie__.indexOf(theName__);	//　指定された名前を検索する
		if (start__ != -1)
		{
			end__ = theCookie__.indexOf(";",start__);
			return unescape(theCookie__.substring(start__+theName__.length,end__));
		}
		return false;
	}

	// (すべての変数に格納する値は0オリジンとする)
	function myFormatNumber(x) {
		var s = "" + x;										// 確実に文字列型に変換する。
		var p = s.indexOf(".");								// 小数点の位置を0オリジンで求める。

		if (p < 0) {										// 小数点が見つからなかった時
			p = s.length;									// 仮想的な小数点の位置とする
		}
		var r = s.substring(p, s.length); 					// 小数点の桁と小数点より右側の文字列。
		for (var i = 0; i < p; i++) { 						// (10 ^ i) の位について
			var c = s.substring(p - 1 - i, p - 1 - i + 1);	// (10 ^ i) の位のひとつの桁の数字。

			if (c < "0" || c > "9") { // 数字以外のもの(符合など)が見つかった
				r = s.substring(0, p - i) + r; // 残りを全部付加する
				break;
			}

			if (i > 0 && i % 3 == 0) { // 3 桁ごと、ただし初回は除く
				r = "," + r; // カンマを付加する
			}

			r = c + r; // 数字を一桁追加する。
		}

		return r;
	}
