/*
********************************************************************************
* システム：宿泊予約レンタルサイト                                             *
*==============================================================================*
* クラス　：画面共通JavaScript    ｜モジュール：RS.js                          *
* 概要　　：各画面の共通JavaScript                                             *
* 作成　　：2001/02/22 M.Nadai(SPC)                                            *
*------------------------------------------------------------------------------*
* 更新　　：2001/08/10 S.Teramoto(SPC)  RS_getParameter()追加                  *
*         ：2001/11/27 S.Hayakawa(SPC)  RS_zenkaku2hankaku 追加                *
*                                                                              *
*		　：2002/05/29 K.Harada(UIS)    RS_isAllInput()にパスワード機能を追加  *
*         ：2007/06/08 D.Arai(Transnet Inc.)  大文字⇔小文字変換機能を追加     *
*         ：2008/01/10 D.Arai(Transnet Inc.)  以下の機能を追加                 *
*                                      ・複数TXTボックス使用時カーソル自動移動 *
*                                      ・入力内容クリア機能                    *
*                                      ・メールアドレスの構文チェック機能      *
*                                      ・不正文字チェック機能                  *
********************************************************************************
*/

  ////////////////////////
 // スタイルシート設定 //
////////////////////////
function RS_setStyleSheet( BaseDir ) {
	if( navigator.userAgent.indexOf( "MSIE" ) >= 0 ) {
		document.write( '<LINK rel="stylesheet" Type="text/css" href="' + BaseDir + 'style/IE.css">' );
	} else {
		document.write( '<LINK rel="stylesheet" Type="text/css" href="' + BaseDir + 'style/NN.css">' );
	}
}

  ////////////////
 // ボタン設定 //
////////////////
function RS_trapEvent() {
	return( false );
}
function RS_disableButtons() {

	// NN : キーイベントを無視
	if( document.layers ) {
		document.captureEvents( Event.KEYDOWN   );
		document.onKeyDown   = RS_trapEvent;
		document.captureEvents( Event.MOUSEDOWN );
		document.onMouseDown = RS_trapEvent;
	} else {

	// IE : ボタンを disabled
	for( var i = 0; i < document.forms.length; i ++ ) {
		for( var j = 0; j < document.forms[i].elements.length; j ++ ) {
			with( document.forms[i].elements[j] ) {
				if( type == "submit"
				 || type == "button"
				 || type == "reset"
				 || type == "image" ) disabled = true;
			}
		}
	}

	}

}

  //////////////
 // 二項演算 //
//////////////
function RS_alternative( Condition, trueValue, falseValue ) {
	var Result;
	if( Condition ) Result =  trueValue;
	else            Result = falseValue;
	return( Result );
}
function RS_max( Value1, Value2 ) {
	return( RS_alternative( Value1 > Value2, Value1, Value2 ) );
}
function RS_min( Value1, Value2 ) {
	return( RS_alternative( Value1 < Value2, Value1, Value2 ) );
}

  //////////////////////////////////
 // 文字列の前後のスペースを削除 //
//////////////////////////////////
function RS_trim( Value ) {
	var l = Value.length;
	// 前から検索
	for( var s = 0; s < l; s ++ ) {
		if( Value.charAt( s ) != " " ) break;
	}
	// 後から検索
	for( var e = l - 1; e >= 0; e -- ) {
		if( Value.charAt( e ) != " " ) break;
	} e ++;
	// 取り出す
	var Result = "";
	if( s < e ) Result = Value.substring( s, e );

	return( Result );
}

  //////////////////
 // 存在チェック //
//////////////////
function RS_isExist( Form, Key, Index ) {
	var Result = false;
	with( Form ) {
		for( var i = 0; i < elements.length; i ++ ) {
			if( elements[i].name == Key+Index ) {
				Result = true;
				break;
			}
		}
		return( Result );
	}
}

  //////////////////
 // 数値チェック //
//////////////////
function RS_checkNumeric( TextBox, isCheckBlank ) {
	// 数値チェック
	if( isNaN( Number( TextBox.value ) ) ) {
		if( TextBox.type.substring(0,4) == "text" ) TextBox.select();
		return( false );
	}
	if( isFinite( isCheckBlank ) ) {
		// ブランクチェック
		if( isCheckBlank.valueOf() && TextBox.value == "" ) {
			return( false );
		}
	}

	return( true );
}

  //////////////////
 // 正値チェック //
//////////////////
function RS_checkNumericPositive( TextBox, isCheckBlank ) {

	// 数値チェック
	if( ! RS_checkNumeric( TextBox, isCheckBlank ) ) {
		return( false );
	}
	// 正値チェック
	if( Number( TextBox.value ) < 0 ) {
		return( false );
	}

	return( true );
}

  //////////////////
 // 入力チェック //
//////////////////
function RS_isInput( Form, Key, Index ) {
	with( Form ) {
		var Obj = eval( Key+Index );
		return( RS_alternative( Obj.value != "", true, false ) );
	}
}

function RS_isAllInput( Form ) {
	for( var j = 0; j < Form.elements.length; j ++ ) {
		with( Form.elements[j] ) {
			if( type.substring(0,4) == "text" ) {
				if( ! RS_isInput( Form, name, "" ) ) {
					return( false ); }
			}
			if( type.substring(0,6) == "select" ) {
//				if( ! RS_isSelect( this.Form, name, "" ) )
//					return( false );
			}
			if( type == "checkbox" || type == "radio" ) {
//				if( ! RS_isCheck( this.form, name, "" ) )
//					return( false );
			}

			if( type.substring(0,8) == "password" )

			{

				if( ! RS_isInput( Form, name, "" ) )

				{
					return( false );

				}
			}
		}
	}
	return( true )
}

  //////////////////
 // 重複チェック //
//////////////////
function RS_isDuplicate( Form, Key, Index ) {
	var Result = false;
	with( Form ) {
		var Obj = eval( Key+Index );
		for( var i = 0; i < elements.length; i ++ ) {
			if( elements[i].name.substring( 0, Key.length ) == Key
			 && elements[i].name != Key+Index ) {
				if( elements[i].value == Obj.value ) {
					Result = true;
					break;
				}
			}
		}
	}
	return( Result );
}

  //////////////////
 // 日付チェック //
//////////////////
function RS_checkDate(MyForm, YYYY, MM, DD)
{
	var FlagYYYY = false;
	var FlagMM   = false;
	var FlagDD   = false;
	var yyyy, mm, dd;
	for (var i=0; i<MyForm.elements.length; i++ )
	{
		with( MyForm.elements[i] )
		{
			if( name == YYYY )
			{
				yyyy = RS_trim( value );
				if( yyyy != "" )
					FlagYYYY = true;
			}
			else
			{
				if( name == MM )
				{
					mm = RS_trim( value );
					if( mm != "" )
						FlagMM = true;
				}
				else
				{
					if( name == DD )
					{
						dd = RS_trim( value );
						if( dd != "" )
							FlagDD = true;
					}
				}
			}
		}
	}
	if(FlagYYYY || FlagMM || FlagDD)
	{
		date = new Date( yyyy + "/" + mm + "/" + dd );
		if( yyyy != date.getFullYear() ) return( false );
		if(   mm != date.getMonth()+1  ) return( false );
		if(   dd != date.getDate()     ) return( false );
	}
	// 正常
	return( true );
}

//==============================//
//HTMLのパラメータを取得する関数//
// 引数:パラメータ名　　　      //
// 戻値:パラメータ値  　　      //
//==============================//
function RS_getParameter( Name ) {

	// 初期値を代入（パラメータがないときの値）
	var Value = "";
	// indexOf()の文字列が見つからなかった場合の値
	var NotExist = -1;

	// パラメータの連結文字を配列で定義
	var Connector = new Array( "?", "&" );
	// 連結文字のループ
	for( var i = 0; i < Connector.length; i ++ ) {
		// パラメータを検索
		var SearchString = Connector[i]+Name+"=";
		var indexOfParameter = location.search.indexOf( SearchString );
		// パラメータの存在確認
		if( indexOfParameter != NotExist ) {
			var indexOfAmpersand = location.search.indexOf( "&",indexOfParameter+1 );
			var indexOfEqual     = location.search.indexOf( "=",indexOfParameter+1 );
			var lengthOfParameterName;
			// "&"を検索してパラメータの位置確認
			if( indexOfAmpersand != NotExist ) {
				lengthOfParameterName = indexOfAmpersand - (indexOfEqual+1);
			} else {
				lengthOfParameterName = location.search.length - (indexOfEqual+1);
			}
			// パラメータ値を取得
			Value = location.search.substr( indexOfParameter + SearchString.length ,lengthOfParameterName );
			// 存在したらループをぬける
			break;
		}
	}

	return( Value );
}

function RS_isEnabledCookie() {
	var Result = true;
	RS_setCookie( "RS_Test", Result );
	if( RS_getCookie( "RS_Test" ) == "" ) Result = false;
	else                                  RS_deleteCookie( "RS_Test" );
	return( Result );
}

function RS_getCookie( Key ) {
	var Cookie = document.cookie + ";";
	var Index = Cookie.indexOf( Key, 0 );
	if( Index < 0 ) return( "" );

	var s = Cookie.indexOf( "=", Index+1 );
	if( s < 0 ) return( "" );
	s ++;
	var e = Cookie.indexOf( ";", s );
	if( e < 0 ) return( "" );
	return( unescape( Cookie.substring( s, e ) ) );
}
function RS_setCookie( Key,Value ) {
	if( Key != "" ) {
		if( Value == "" ) {
			RS_deleteCookie( Key );
		} else {
			var Str = Key + "=" + escape( Value ) + ";";
			Str += "expires=Fri, 31-Dec-2030 23:59:39;";
			document.cookie = Str;
		}
	}
}
function RS_deleteCookie( Key ) {
	if( document.cookie != "" ) {
		var Item = document.cookie.split( "; " );
		var Expire = new Date();
		Expire.setYear( Expire.getYear()-1 );
		for( var i = 0;i < Item.length; i ++ ) {
			var Name = Item[i].split( "=" )[0];
			if( Name == Key ) {
				document.cookie = Name + "=;expireDate=" + Expire.toGMTString();
				break;
			}
		}
	}
}
function RS_clearCookie() {
	if( document.cookie != "" ) {
		var Item = document.cookie.split( "; " );
		var Expire = new Date();
		Expire.setYear( Expire.getYear()-1 );
		for( var i = 0;i < Item.length; i ++ ) {
			var Name = Item[i].split( "=" )[0];
			document.cookie = Name + "=;expireDate=" + Expire.toGMTString();
		}
	}
	return( Item.length );
}


  ////////////////////////
 // 全角から半角に変換 //
////////////////////////
function RS_zenkaku2hankaku( Str ) {
	if( navigator.userAgent.indexOf( "MSIE" ) >= 0 ) {
		return ( RS_zenkaku2hankakuIE( Str ) );
	} else {
		return ( RS_zenkaku2hankakuNN( Str ) );
	}
}

function RS_zenkaku2hankakuNN( Str ) {
	var CharA = "W";
	var CharB = "V";
	var CharC = "￥";
	var CharD = "−";
	var CharE = "〜";
	var MinZenkaku = "！";
	var MaxZenkaku = "｝";
	var MinHankaku = "!";
	var MaxHankaku = "}";
	var MinZenkakuCode = MinZenkaku.charCodeAt(0);
	var MaxZenkakuCode = MaxZenkaku.charCodeAt(0);
	var Integer = MinZenkakuCode - MinHankaku.charCodeAt(0);
	var NewString = "";
	for( i = 0; i < Str.length; i ++ ) {
		var Code = Str.charCodeAt(i);
		if( Code == CharA.charCodeAt(0) ) {
			NewString = NewString.concat( "\"" );
		} else
		if( Code == CharB.charCodeAt(0) ) {
			NewString = NewString.concat( "'" );
		} else
		if( Code == CharC.charCodeAt(0) ) {
			NewString = NewString.concat( "\\" );
		} else
		if( Code == CharD.charCodeAt(0) ) {
			NewString = NewString.concat( "-" );
		}else 
		if( Code == CharE.charCodeAt(0) ) {
			NewString = NewString.concat( "~" );
		}else{
			if( Code >= MinZenkakuCode && Code <= MaxZenkakuCode ) {
				var Character = String.fromCharCode( Code - Integer );
				NewString = NewString.concat( Character );
			} else {
				var Character = String.fromCharCode( Code );
				NewString = NewString.concat( Character );
			}
		}
	}
	return ( NewString );
}

function RS_zenkaku2hankakuIE( Str ) {
	var MinZenkaku = "！";
	var MaxZenkaku = "〜";
	var MinHankaku = "!";
	var MaxHankaku = "~";
	var MinZenkakuCode = MinZenkaku.charCodeAt(0);
	var MaxZenkakuCode = MaxZenkaku.charCodeAt(0);
	var Integer = MinZenkakuCode - MinHankaku.charCodeAt(0);
	var NewString = "";
	for( var i = 0; i < Str.length; i ++ ) {
		var Code = Str.charCodeAt(i);
		if( Code >= MinZenkakuCode && Code <= MaxZenkakuCode ) {
			var Character = String.fromCharCode( Code - Integer );
			NewString = NewString.concat( Character );
		} else {
			var Character = String.fromCharCode( Code );
			NewString = NewString.concat( Character );
		}
	}
	return ( NewString );
}


//add

function RS_space( Str ) {
	var CharA = "　";
	for( i = 0; i < Str.length; i ++ ) {
		var Code = Str.charCodeAt(i);
		if( Code == CharA.charCodeAt(0) ) {
			NewString = NewString.concat( " " );
		} 
	}
	return ( NewString );
}

// 小文字英数→大文字英数  2007.06.08 added
function RS_small2bigChar( Str ) {
	var NewString = "";
	NewString = Str.toUpperCase();
	return ( NewString );
}

// 大文字英数→小文字英数  2007.06.08 added
function RS_big2smallChar( Str ) {
	var NewString = "";
	NewString = Str.toLowerCase();
	return ( NewString );
}

////////////////////////////////////////////////////////////////////////////
//複数のテキストボックス使用時に適用
//桁数分入力したら自動で次のテキストボックスへカーソルが移動する
//
//使用例）クレジット番号入力時                              2008.01.10 追加
////////////////////////////////////////////////////////////////////////////
function setnextfocus(form, ketasu, maxketa, nexttagname) {
    with(form) {
        if(maxketa == ketasu) {
            nexttagname.focus();
            return;
        }
    }
}

////////////////////////////////////////////////////////////////////////////////////
//フォーム内の（ほとんどの）入力ボックスをクリア（内容を空白）する  2008.01.10 追加
////////////////////////////////////////////////////////////////////////////////////
function AllReset(MyForm) {
	with( MyForm ) {
		for (var i=0; i<elements.length; i++ ) {
			var e_obj = elements[i];
			if(e_obj.type.toLowerCase() == "text")        e_obj.value         = "";
			if(e_obj.type.toLowerCase() == "textarea")    e_obj.value         = "";
			if(e_obj.type.toLowerCase() == "password")    e_obj.value         = '';
			if(e_obj.type.toLowerCase() == "checkbox")    e_obj.checked       = false;
			if(e_obj.type.toLowerCase() == "select-one")  e_obj.selectedIndex = 0;
			if(e_obj.type.toLowerCase() == "radio")       e_obj.checked       = false;
		}
	}
}

/////////////////////////////////////////////////////
//メールアドレスの構文チェックする  2008.01.10 追加
//Return値：true（正常）、false（異常）
/////////////////////////////////////////////////////
function CheckMailAddress( sEmail ) {
	var _Email = sEmail;
	var okStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890._-@";
	var pos = _Email.indexOf( "@", 0 );

	if( pos == -1 ) {
		return false;
	} else if( pos == 0 ) {
		return false;
	} else if( pos == (_Email.length-1) ) {
		return false;
	}

	if( _Email.indexOf( "@" ,pos+1 ) != -1 ) {
		return false;
	}

//	if( _Email.indexOf( "," ,0 ) != -1 ) {
//		alert( str + "「,」(カンマ)があったので「.」(ピリオド)に置き換えました");
//		return true;
//	}

	if( _Email.substring( 0,1 ) == "." ) {
		return false;
	}
	if( _Email.substring( pos+1, pos+2 ) == "." ) {
		return false;
	}

	var chk = _Email.toUpperCase();

	for( var i=0; i<chk.length; i++ ) {
		var wrk = chk.substring(i, i+1);

		var ok_flg = false;
		for( var j=0; j<okStr.length; j++ ) {
			if( wrk == okStr.substring(j, j+1) ) {
				ok_flg = true;
				break;
			}
		}
		if( ok_flg ) continue;

		return false;
	}

	return true;
}

////////////////////////////////////////////////////////////////////////
//入力内容に不正文字が含まれていないかをチェックする  2008.01.10 追加
//Return値：不正文字（異常が無い場合は空白）
////////////////////////////////////////////////////////////////////////
function CheckInvalidChar(NM){
	var n = NM.value.length;
//	var strIzon ="()＆&＜<＞>¢〜゛゜‖¬'\\\"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]@ABCDEFGHI_`abcdefghijklmnopqrstu∞ｇョх援括窮欠合紫順~";
	var strIzon ="＆&＜<＞>¢〜゛゜‖¬'\\\"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]@ABCDEFGHI_`abcdefghijklmnopqrstu∞ｇョх援括窮欠合紫順~";
	var strChk;

	for(cnt=0;cnt<n;cnt++){
		strChk = NM.value.charAt(cnt);
		if (strIzon.indexOf(strChk) == -1){
		}else{
			return strChk;
		}
	}

	return "";
}
