// ----------------------------------------------------------
// 処理名：common.js
// 機　能：Javascript共通関数ファイル
// 引　数：なし
// 戻り値：なし
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

// OSバージョン

var OSNM_MAC = "Mac";
var OSNM_WIN = "Win";
var OSNM_OTH = "Oth";

// ブラウザバージョン

var BRNM_N2 = "n2";
var BRNM_N3 = "n3";
var BRNM_N4 = "n4";
var BRNM_N5 = "n5";
var BRNM_N6 = "n6";
var BRNM_N7 = "n7";
var BRNM_E3 = "e3";
var BRNM_E4 = "e4";
var BRNM_E45 = "e45";
var BRNM_E5 = "e5";
var BRNM_E55 = "e55";
var BRNM_E6 = "e6";

// スタイルシート名

var CSS_FLD = "";

// スタイルシート名

var CSS_MC = "mac.css";
var CSS_N1 = "nn4x.css";
var CSS_N2 = "nn67.css";
var CSS_IE = "ie.css";

// スタイルシートフォルダパス

var CSS_PATH = "/tas-karte/css/";

// エラーメッセージ

var ERR_LOGIN_MSG = "ログインエラーです。\nIDもしくはパスワードが違います。\nもう一度入力内容を確認し「ログイン」ボタンを押して下さい。";
var ERR_REMAIN_MSG = "パスワード確認エラーです。\nIDもしくはメールアドレスを確認して下さい。\nリマインダの答えを入力する際には、全角半角の確認も行ってください。";

// プロフィール入力エラー

var ERR_MSG_0101 = "未入力の項目があります。必須項目は必ず入力して下さい。";
var ERR_MSG_0102 = "（姓）ふりがなは片仮名で入力して下さい。";
var ERR_MSG_0103 = "（名）ふりがなは片仮名で入力して下さい。";
var ERR_MSG_0104 = "（姓）ふりがなは20文字以内で入力して下さい。";
var ERR_MSG_0105 = "（名）ふりがなは20文字以内で入力して下さい。";
var ERR_MSG_0106 = "（姓）漢字は10文字以内で入力して下さい。";
var ERR_MSG_0107 = "（名）漢字は10文字以内で入力して下さい。";
var ERR_MSG_0108 = "メールアドレスの入力が正しくありません。メールアドレスを確認し、再度入力して下さい。";
var ERR_MSG_0109 = "パスワードは8文字以上20文字以内で入力して下さい。";
var ERR_MSG_0110 = "パスワードは半角英数で入力して下さい。";
var ERR_MSG_0111 = "リマインダー答えは全角20文字以内で入力して下さい。";
var ERR_MSG_0112 = "パスワードの入力が正しくありません。";

// ----------------------------------------------------------
// 処理名：SetDispInit
// 機　能：HTML内のbody：styleを表示するに変更
// 引　数：−
// 戻り値：−
// 作成日：2004/3/5
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetDispInit() {

	//document.body.style.display = "inline";

}

// ----------------------------------------------------------
// 処理名：GetBrVer
// 機　能：ブラウザの種類とバージョン取得
// 引　数：−
// 戻り値：ブラウザの種類とバージョン
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function GetBrVer() {
	
	brName = navigator.appName;				//ブラウザ名
	brVer = parseInt(navigator.appVersion);	//バージョン
	var apV = "";
	
	if (brName == "Netscape" && brVer == 6) { return BRNM_N6; }
	else if (brName == "Netscape" && brVer == 7) { return BRNM_N7; }
	else if (brName == "Netscape" && brVer == 5) { return BRNM_N5; }
	else if (brName == "Netscape" && brVer == 4) { return BRNM_N4; }
	else if (brName == "Netscape" && brVer == 3) { return BRNM_N3; }
	else if (brName == "Netscape" && brVer == 2) { return BRNM_N2; }
	else if (brName == "Microsoft Internet Explorer" && brVer >= 2 && brVer <= 3) { return BRNM_E3; }
	else if (brName == "Microsoft Internet Explorer" && brVer > 3 && brVer <= 4) { return BRNM_E4; }
	else if (brName == "Microsoft Internet Explorer" && brVer > 4 && brVer <= 4.5) { return BRNM_E45; }
	else if (brName == "Microsoft Internet Explorer" && brVer > 4.5 && brVer <= 5) { return BRNM_E5; }
	else if (brName == "Microsoft Internet Explorer" && brVer > 5 && brVer <= 5.5) { return BRNM_E55; }
	else if (brName == "Microsoft Internet Explorer" && brVer > 5.5 && brVer <= 6) { return BRNM_E6; }
}

// ----------------------------------------------------------
// 処理名：GetOsVer
// 機　能：OSの種類取得
// 引　数：−
// 戻り値：OSの種類
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function GetOsVer() {
	
	var nAgent = 0;
	nAgent = navigator.userAgent.indexOf(OSNM_MAC) + 0;
	if( nAgent > 0 ){ return OSNM_MAC; }	//MACの場合
	nAgent = navigator.userAgent.indexOf(OSNM_WIN) + 0;	//WINの場合
	if( nAgent > 0 ){ return OSNM_WIN; }
	return OSNM_OTH;
	
}


// ----------------------------------------------------------
// 処理名：SetCss
// 機　能：スタイルシート設定
// 引　数：_nPos → スタイルシートフォルダの位置
// 戻り値：スタイルシートファイル名
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetCss( _nPos ) {
	
	var strGetOs = GetOsVer();	//OSのバージョン取得
	var strGetBr = GetBrVer();	//ブラウザの種類とバージョン取得
	
//	var nowUrl = document.URL;	//ドキュメント自体のURLから指定分、パスを削除
//	var fUrl = SetCutStr(nowUrl, "/", _nPos);	// URL絶対パス（NS4.x用）
//	var sUrl = "";								// URL相対パス
//	for (i = 1; i < _nPos; i++ ) { sUrl = sUrl + "../" }	// 相対パス取得
	
	if (strGetOs == OSNM_MAC) { return CSS_PATH + CSS_MC; }	// ブラウザにより、CSSセット
	else if ((strGetOs == OSNM_WIN) || (strGetOs == OSNM_OTH)) {
		if (strGetBr == BRNM_N2) { return CSS_PATH + CSS_N1; }
		else if (strGetBr == BRNM_N3)	{ return CSS_PATH + CSS_N1; }
		else if (strGetBr == BRNM_N4)	{ return CSS_PATH + CSS_N1; }
		else if (strGetBr == BRNM_N5)	{ return CSS_PATH + CSS_N2; }
		else if (strGetBr == BRNM_N6)	{ return CSS_PATH + CSS_N2; }
		else if (strGetBr == BRNM_N7)	{ return CSS_PATH + CSS_N2; }
		else if (strGetBr == BRNM_E3)	{ return CSS_PATH + CSS_IE; }
		else if (strGetBr == BRNM_E4)	{ return CSS_PATH + CSS_IE; }
		else if (strGetBr == BRNM_E45)	{ return CSS_PATH + CSS_IE; }
		else if (strGetBr == BRNM_E5)	{ return CSS_PATH + CSS_IE; }
		else if (strGetBr == BRNM_E55)	{ return CSS_PATH + CSS_IE; }
		else if (strGetBr == BRNM_E6)	{ return CSS_PATH + CSS_IE; }
	} else { return CSS_PATH + CSS_IE }
}


// ----------------------------------------------------------
// 処理名：ChkStrLenLess
// 機　能：文字桁数チェック（文字数以内か）
// 引　数：_str → チェック対象文字／_chkkt → チェック時の文字数
// 戻り値：true → 文字数以内である／false → 文字数より上
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function ChkStrLenLess( _str, _chkkt ){
	if ( _str.length <= _chkkt ) {return true;}
	else { return false; }
}


// ----------------------------------------------------------
// 処理名：GetLenB
// 機　能：文字列のバイト数を取得する
// 引　数：str → 対象文字列
// 戻り値：文字列のバイト数
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function GetLenB(str) {
	var i, len, str;
	len = 0;
	str = escape(str);
	for (i = 0; i < str.length; i++, len++) {
		if (str.charAt(i) == "%") {
			if (str.charAt(++i) == "u") {
				i += 3;
				len++;
			}
			i++;
		}
	}
	return len;
}


// ----------------------------------------------------------
// 内　容：文字列の削除
// 引　数：_mStr → 削除する対象文字列 ｜ _inStr → 削除のポイントとなる文字 ｜ _n → 何個目
// 　例　：SetCutStr("http://www.xxx.com/aaa/bbb/ccc.html","/", 2) → "http://www.xxx.com/aaa"
// 戻り値：削除後の文字列
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetCutStr( _mStr, _inStr, _n ) {
	
	var hitCnt = 0;
	var setCnt = 0;
	var cutCnt = 0;
	
	for (i = 0; i < _mStr.length; i++ ) { if ( _mStr.charAt(i) == _inStr ) { hitCnt++; } }
	for (i = 0; i < _mStr.length; i++ ) {
		if ( _mStr.charAt(i) == _inStr ) {
			setCnt++;
			if ( setCnt == hitCnt - _n + 1 ) { cutCnt = i; break; }
		}
	}
	return _mStr.substr(0, cutCnt) + _inStr;
}


// ----------------------------------------------------------
// 処理名：ChgImg
// 機　能：画像変更
// 引　数：_obj → イメージオブジェクト／_img → イメージパス
// 戻り値：−
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function ChgImg( _obj, _img ) {
	document.images[_obj].src = _img;
}


// ----------------------------------------------------------
// 処理名：SetCutNull
// 機　能：半角スペース、全角スペース、改行をなしとして返す
// 引　数：_str → チェック対象文字列
// 戻り値：取り除く文字を取り除いた文字列
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetCutNull( _str ){

	var hitCnt = 0;
	var strS = _str;

	for (i = 0; i < strS.length; i++ ) {if ( strS.charAt(i) == " " ) { hitCnt++; } }
	for (i = 0; i < hitCnt; i++ ) { strS = strS.replace( " ", "" ); }
	hitCnt = 0
	for (i = 0; i < strS.length; i++ ) { if ( strS.charAt(i) == "　" ) { hitCnt++; } }
	for (i = 0; i < hitCnt; i++ ) { strS = strS.replace( "　", "" ); }

	hitCnt = 0
	for (i = 0; i < strS.length; i++ ) { if ( strS.charAt(i) == unescape('%0D%0A') ) { hitCnt++; } }
	for (i = 0; i < hitCnt; i++ ) { strS = strS.replace( unescape('%0D%0A'), "" ); }
	hitCnt = 0
	for (i = 0; i < strS.length; i++ ) { if ( strS.charAt(i) == unescape('%0A') ) { hitCnt++; } }
	for (i = 0; i < hitCnt; i++ ) { strS = strS.replace( unescape('%0A'), "" ); }
	hitCnt = 0
	for (i = 0; i < strS.length; i++ ) { if ( strS.charAt(i) == unescape('%0D') ) { hitCnt++; } }
	for (i = 0; i < hitCnt; i++ ) { strS = strS.replace( unescape('%0D'), "" ); }
	
	return strS;
}

// ----------------------------------------------------------
// 処理名：SetHdnSubmit
// 機　能：Aタグで、Submitを実行
// 引　数：_fnm → Submit対象フォーム名／_val → HIDDENに、セットしたい値
// 戻り値：なし
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetHdnSubmit( _fname, _val ){
	document.forms[ _fname ].elements["hdnmit"].value = _val;
	document.forms[ _fname ].submit();
}

// ----------------------------------------------------------
// 処理名：SetFrmSubmit
// 機　能：Aタグで、Submitを実行
// 引　数：_fnm → Submit対象フォーム名
// 戻り値：なし
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetFrmSubmit( _fnm ){
	document.forms[ _fnm ].submit();
}

// ----------------------------------------------------------
// 処理名：SetOpenWin
// 機　能：ポップアップウィンドウを開く
// 引　数：_url → 対象URL／_w → 幅／_h → 幅
// 戻り値：なし
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetOpenWin( _url, _w, _h ){
	var strPara = "width=" + _w + ",height=" + _h + ",resizable=no,scrollbars=no";
	var nWin = window.open( _url , "" , strPara );
	nWin.focus();
}

// ----------------------------------------------------------
// 処理名：SetOpenWin2
// 機　能：ポップアップウィンドウを開く（同ウィンドウ多重起動禁止）
// 引　数：_url → 対象URL／_w → 幅／_h → 幅／_name → ウィンドウ名
// 戻り値：なし
// 作成日：2004/5/7
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetOpenWin2( _url, _w, _h, _name ){
	var strPara = "width=" + _w + ",height=" + _h + ",resizable=no,scrollbars=no";
	var nWin2 = window.open( _url , _name , strPara );
	//nWin2.focus();
}

// ----------------------------------------------------------
// 処理名：SetOpenWin3
// 機　能：ポップアップウィンドウを開く(スクロールあり)
// 引　数：_url → 対象URL／_w → 幅／_h → 幅
// 戻り値：なし
// 作成日：2005/3/17
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetOpenWin3( _url, _w, _h ){
	var strPara = "width=" + _w + ",height=" + _h + ",resizable=yes,scrollbars=yes";
	var nWin = window.open( _url , "" , strPara );
	nWin.focus();
}

// ----------------------------------------------------------
// 処理名：GetWindowSize
// 機　能：ウインドウサイズ取得
// 引　数：type → 幅 or 高さ（W：幅／H：高さ）
// 戻り値：なし
// 作成日：2004/1/8
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function GetWindowSize( type ) {
	switch ( type ) {
		case "W":
			if ( document.all ) { return( document.body.clientWidth ); }
			else if ( document.layers ) { return( innerWidth ); }
			else if ( document.getElementById ){ return( innerWidth ); }
			else { return( -1 ); }
			break;
		case "H":
			if ( document.all ) { return( document.body.clientHeight ); }
			else if ( document.layers ) { return( innerHeight ); }
			else if ( document.getElementById ) { return( innerHeight ); }
			else { return(-1); }
			break;
		default:
			return( -1 );
		break;
	}
}

// ----------------------------------------------------------
// 処理名：SetObjItem
// 機　能：Aタグで、Submitを実行
// 引　数：_fnm → Submit対象フォーム名／_hdn → オブジェクト名／_val → HIDDENに、セットしたい値
// 戻り値：なし
// 作成日：2004/1/27
// 修正日時：
// 修正内容：
// ----------------------------------------------------------

function SetObjItem( _frm, _hdn, _val ) {
	document.forms[ _frm ].elements[ _hdn ].value = _val;
	document.forms[ _frm ].submit();
}

// ----------------------------------------------------------
// 処理名：ChkRoman
// 機　能：半角チェック
// 引　数：_str → チェック対象文字
// 戻り値：true → 半角である／false → 半角でない
// ----------------------------------------------------------

function ChkRoman( _str ){
	
	var strTmp = escape( _str );	//元文字列をescape　全角文字は %u 付き文字に変換
	var nLen = _str.length;
	var nCnt = 0;					// %u 数をカウント
	
	while( strTmp.indexOf("%u") != -1 )	{		// %u が含まれる間、ループ
		var strTmpLen = strTmp.length;
		var strTmpFlag = strTmp.indexOf( "%u" );
		strTmp = strTmp.substring( strTmpFlag + 1, strTmpLen );
		nCnt++;
	}
	
	if ( nLen + nCnt == nLen ) { return true; }	//バイト数チェック
	else { return false; }
}

// ----------------------------------------------------------
// 処理名：ChkEmail
// 機　能：メールアドレスチェック
// 引　数：_mStr → 対象文字列
// 戻り値：true → 正しいメールアドレス／false → 誤ったメールアドレス
// ----------------------------------------------------------

function ChkEmail( _chkStr ){
	var newstr = "";
	var at = false;
	var dot = false;
	
	if ( _chkStr.indexOf( "@" ) != -1 ) { at = true; }
	else if ( _chkStr.indexOf( "." ) != -1 ) { dot = true; }
	for ( var i = 0; i < _chkStr.length; i++ ) {
		ch = _chkStr.substring(i, i + 1);
		if ( ( ch >= "A" && ch <= "Z" ) || ( ch >= "a" && ch <= "z" )
			|| ( ch == "@" ) || ( ch == "." ) || ( ch == "_" )
			|| ( ch == "-" ) || ( ch >= "0" && ch <= "9" ) ) {
			newstr += ch;
			if ( ch == "@" ) { at = true; }
			if ( ch == "." ) { dot = true; }
		}
	}
	if (( at == true ) && ( dot == true )) {
		
		if ( _chkStr.substr( _chkStr.length - 1, 1 ) == "." ) {;
			return false;
		} else {
			return true;
		}
	}
	else { return false; }
}

// ----------------------------------------------------------
// 処理名：ChkStrBiteLess
// 機　能：文字バイト数チェック（バイト数以内か）
// 引　数：_str → チェック対象文字／_chkkt → チェック時のバイト数
// 戻り値：true → バイト数以内／false → バイト数より上
// ----------------------------------------------------------

function ChkStrBiteLess( _str, _chkkt ){
	
	var strTmp = escape( _str )	//元文字列をescape　全角文字は %u 付き文字に変換
	var orgLen = _str.length
	var counter = 0				// %u 数をカウント
	
	while( strTmp.indexOf("%u") != -1 )	{		
		var strTmpLen = strTmp.length			
		var strTmpFlag = strTmp.indexOf( "%u" )	
		strTmp = strTmp.substring( strTmpFlag + 1, strTmpLen )	
		counter++								
	}
	
	if ( orgLen + counter <= _chkkt ) {return true;}
	else { return false; }
	
}


// ----------------------------------------------------------
// 処理名：ChkStrBiteMore
// 機　能：文字バイト数チェック（バイト数以上か）
// 引　数：_str → チェック対象文字／_chkkt → チェック時のバイト数
// 戻り値：true → バイト数以上／false → バイト数より下
// ----------------------------------------------------------

function ChkStrBiteMore( _str, _chkkt ){
	
	var strTmp = escape( _str )	//元文字列をescape　全角文字は %u 付き文字に変換
	var orgLen = _str.length
	var counter = 0				// %u 数をカウント
	
	while( strTmp.indexOf("%u") != -1 )	{		
		var strTmpLen = strTmp.length			
		var strTmpFlag = strTmp.indexOf( "%u" )	
		strTmp = strTmp.substring( strTmpFlag + 1, strTmpLen )	
		counter++								
	}
	
	if ( orgLen + counter >= _chkkt ) {return true;}
	else { return false; }
	
}

// ----------------------------------------------------------
// 処理名：SetTrim
// 機　能：両端にあるスペース文字削除
// 引　数：_iStr → チェック対象文字列
// 戻り値：取り除く文字を取り除いた文字列
// ----------------------------------------------------------

function SetTrim( _iStr ){
	
	var strTmp;
	var str1 = " ";
	var str2 = "　";
	
	strTmp = "" + _iStr;
	strTmp = "" + SetTrimL( strTmp, str1 );
	strTmp = "" + SetTrimR( strTmp, str1 );
	strTmp = "" + SetTrimL( strTmp, str2 );
	strTmp = "" + SetTrimR( strTmp, str2 );
	
	return strTmp;
}

// ----------------------------------------------------------
// 処理名：SetTrimL
// 機　能：左側にあるスペース文字削除
// 引　数：_iStr → チェック対象文字列／_cStr → 取り除く文字
// 戻り値：取り除く文字を取り除いた文字列
// ----------------------------------------------------------

function SetTrimL( _iStr, _cStr ){
	
	var strTmp;
	var chk;
	
	strTmp = "" + _iStr
	chk = 0;
	
	while( chk == 0 ){
		if( strTmp.charAt(0) == _cStr ){
			strTmp = "" + strTmp.substring( _cStr.length,strTmp.length );
		} else{ chk = 1; }
	}
	return strTmp;
}

// ----------------------------------------------------------
// 処理名：SetTrimR
// 機　能：右側にあるスペース文字削除
// 引　数：_iStr → チェック対象文字列／_cStr → 取り除く文字
// 戻り値：取り除く文字を取り除いた文字列
// ----------------------------------------------------------

function SetTrimR( _iStr, _cStr ){
	
	var strTmp;
	var chk;
	
	strTmp = '' + _iStr;
	chk = 0;
	
	while( chk == 0 ){
		if( strTmp.charAt(strTmp.length-1) == _cStr ){
			strTmp = '' + strTmp.substring( 0, strTmp.length - 1 );
		} else{ chk = 1; }
	}
	return strTmp;
}

// ----------------------------------------------------------
// 処理名：ChkDayFormat
// 機　能：日付フォーマットチェック（YYYY/MM/DD）
// 引　数：_value → チェックする対象文字 (年月日)
// 戻り値：true → 正しい日付フォーマット／false → 誤った日付フォーマット（NULL時は、trueが戻る）
// ----------------------------------------------------------

function ChkDayFormat( _value ){
	
	var isplit;
	var year;
	var month;
	var day;
	var s;
	
	if ( _value.length == 0 ) { return true; }
	if ( _value.length == " " ) { return true; }
	if ( GetLenB( _value ) != 10 ) { return false; }
	isplit = _value.indexOf('/');
	if( isplit < 1 || isplit == _value.length-1 ){ return false; }
	year = _value.substr( 0, isplit );
	s = _value.substr( isplit + 1 );
	isplit = s.indexOf('/');
	if( isplit < 1 || isplit == s.length-1 ){ return false; }
	month = s.substr( 0, isplit );
	day = s.substr( isplit + 1 );
	if( year.search("[^0-9]") != -1 ){ return false; }
	if( month.search("[^0-9]") != -1 ){ return false; }
	if( day.search("[^0-9]") != -1 ){ return false; }
	if( year < 1900 || year > 9999 ){ return false; }
	if( month < 1 || month > 12 ){ return false; }
	return ChkDay( year, month, day );
	return true;
}

// ----------------------------------------------------------
// 処理名：ChkDay
// 機　能：日付チェック
// 引　数：_value → チェックする対象文字 (日付)
// 戻り値：true → 正しい日付／false → 誤った日付
// ----------------------------------------------------------

function ChkDay(_year, _month, _day){
	
	var maxday = new Number();
	
	maxday = 31;
	if( _month == 4 || _month == 6 || _month == 9 || _month == 11 ) { maxday = 30; }
	if( _month == 2 ){
		if( _year == 0 ){ maxday = 29; }
		else {
			if( _year % 4 != 0 ){ maxday = 28; }
			else {
				if( _year % 100 == 0 && _year % 400 != 0 ){ maxday = 28; }
				else { maxday = 29; }
			}
		}
	}
	if( _day < 1 || _day > maxday ){ return false; }
	return true;
}

// ----------------------------------------------------------
// 処理名：ChkRoman2
// 機　能：半角文字チェック
// 引　数：_str → チェック対象文字
// 戻り値：true → 半角英数字である／false → 半角英数字でない
// ----------------------------------------------------------

function ChkRoman2( _str ){
    
	var str2;
    
    var checkStr = new String ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
    
    str2 = _str.replace(/ /g,"");
    if( str2.length == 0 ) { return true; }
    for( var i = 0; i < str2.length; i++ ) {
        if( checkStr.indexOf(str2.charAt(i), 0 ) == -1 ){ return false; }
    }
    return true;
}

