/*-----------------------------------------------------------------------------

  ファイル概要 : 共通仕様関数群


  @package   hotmark
  @license   HotMark Co., Ltd.
  @copyright HotMark Co., Ltd.
  @author    AOI, Inc. <info@a-oi.jp>
  @access    public
  @charset   euc-jp
  @modified  2006/01
  @version   1.0
  @remark

-----------------------------------------------------------------------------*/




	//-------------------------------------------------------------------------
	// 概要 : トリム関数
	//
	// 対象 : すべて
	//-------------------------------------------------------------------------
	function trim( str )
	{
		var strTemp, strRet, strFinal;

		strTemp = str;

		//LTRIM
		strRet = LTrim( strTemp );

		//RTRIM
		strFinal = RTrim( strRet );

		return strFinal;
	}
	function RTrim( strTemp )
	{
		var nLoop     = 0;
		var strReturn = strTemp;

		while (nLoop < strTemp.length)
		{
			if( ( strReturn.substring( strReturn.length - 1, strReturn.length ) == " " ) ||
				( strReturn.substring( strReturn.length - 1, strReturn.length ) == "　" ) )
			{
				strReturn = strTemp.substring( 0, strTemp.length - ( nLoop + 1 ) );
			}
			else
			{
				break;
			}

			nLoop++;
		}

		return strReturn;
	}
	function LTrim( strTemp )
	{
		var nLoop     = 0;
		var strReturn = strTemp;

		while( nLoop < strTemp.length )
		{
			if( ( strReturn.substring( 0, 1 ) == " " ) ||
				( strReturn.substring( 0, 1 ) == "　" ) )
			{
				strReturn = strTemp.substring( nLoop + 1, strTemp.length );
			}
			else
			{
				break;
			}

			nLoop++;
		}

		return strReturn;
	}




	//-------------------------------------------------------------------------
	// 概要 : フォーム必須項目エラー箇所背景色変更
	//
	// 対象 : フォームオブジェクト
	//
	// @param  Array  [aryError] : 必須項目オブジェクトID
	//
	// @event [onload]
	//-------------------------------------------------------------------------
	function fncError( aryError )
	{
		var i, lngErrorCnt;

		lngErrorCnt = aryError.length;

		// エラーが存在しない場合
		if( !lngErrorCnt ) return false;

		// エラーが存在する場合、対象オブジェクトの背景色を変更
		for( i = 0; i < aryError.length; i++ )
		{
			document.getElementById( aryError[i] ).style.backgroundColor = '#ffcccc';
		}

		return false;
	}






	//-------------------------------------------------------------------------
	// 概要 : ブラウザ判別処理関数
	//
	// 解説 : アクセス時にOS・ブラウザを判定し、各指定のCSSファイルを書き出す。
	//
	// 対象 : すべて
	//
	// 外部関数 : [fncDivideCssModule] . スタイルシート振分処理モジュール
	//
	// @param  String  [g_strLocation] : ロケーション文字列定義
	// @param  Array   [g_aryCss]      : 環境別CSSオブジェクト定義用配列
	//-------------------------------------------------------------------------
/*
	// CSSオブジェクト定義
	g_aryCss                 = new Array();
	g_aryCss['macie']        = '<link rel="stylesheet" type="text/css" media="screen,print" href="/css/import/' + g_strLocation + '/import_macie.css" />';
	g_aryCss['macieother']   = '<link rel="stylesheet" type="text/css" media="screen,print" href="/css/import/' + g_strLocation + '/import_macie.css" />';
	g_aryCss['macns2003']    = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['macns2002']    = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['macnsother']   = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['macsafari85']  = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['macsafari100'] = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['macopera']     = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['macother']     = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';

	g_aryCss['winie']        = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['winieother']   = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['winns2003']    = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['winns2002']    = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['winnsother']   = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['winopera']     = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';
	g_aryCss['winother']     = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';

	g_aryCss['otheros']      = '<link rel="stylesheet" type="text/css" href="/css/import/' + g_strLocation + '/import.css" />';


	var g_strPlatfrom   = navigator.platform.toUpperCase();  // OSの取得
	var g_strUserAgent  = navigator.userAgent.toUpperCase(); // ユーザーエージェントの取得
	var g_strAppName    = navigator.appName.toUpperCase();   // ブラウザ名の取得

	// デバッグ
	//alert( g_strUserAgent );



	// Mac
	if ( g_strPlatfrom.indexOf( 'MAC' ) > -1 )
	{
		// Opera
		if( g_strUserAgent.indexOf( 'OPERA' ) > -1 )
		{
			fncDivideCssModule( 'macopera' );
		}

		// InternetExplorer
		else if( g_strAppName.indexOf( 'MICROSOFT' ) > -1 )
		{
			var strVersionBuffer = g_strUserAgent.indexOf( 'MSIE ' , 0 ) + 5;
			var strVersionEval   = g_strUserAgent.indexOf( ';' , strVersionBuffer );
			var strVersion       = g_strUserAgent.substring( strVersionBuffer , strVersionEval );
			var lngVersion       = Number( strVersion );

			// デバッグ
			//alert( lngVersion );

			if( lngVersion >= 5 )
			{
				fncDivideCssModule( 'macie' );
			}
			else
			{
				fncDivideCssModule( 'macieother' );
			}
		}

		// Safari
		else if( g_strUserAgent.indexOf( 'SAFARI' ) > -1 )
		{
			var strVersionBuffer = g_strUserAgent.split( '/' )[3];
			var strVersion       = strVersionBuffer.split( '.' )[0];
			var lngVersion       = Number( strVersion );

			// デバッグ
			//alert( lngVersion );

			if( lngVersion >= 100 )
			{
				fncDivideCssModule( 'macsafari100' );
			}
			else if( lngVersion < 100 )
			{
				fncDivideCssModule( 'macsafari85' );
			}
		}

		// Netscape or Mozilla
		else if( g_strAppName.indexOf( 'NETSCAPE' ) > -1 )
		{
			var strVersionBuffer1 = g_strUserAgent.indexOf( 'GECKO/' , 0 ) + 6;
			var strVersionBuffer2 = g_strUserAgent.indexOf( 'GECKO/' , 0 ) + 10;
			var strVersionBuffer3 = g_strUserAgent.indexOf( 'GECKO/' , 0 ) + 14;

			var strVersion1       = g_strUserAgent.substring( strVersionBuffer1 , strVersionBuffer2 );
			var strVersion2       = g_strUserAgent.substring( strVersionBuffer1 , strVersionBuffer3 );

			var lngVersion1       = Number( strVersion1 );
			var lngVersion2       = Number( strVersion2 );

			// デバッグ
			//alert( lngVersion2 );

			if( lngVersion1 >= 2003 )
			{
				fncDivideCssModule( 'macns2003' );
			}
			else if( lngVersion2 <= 20010131 )
			{
				fncDivideCssModule( 'macnsother' );
			}
			else if( lngVersion1 < 2003 )
			{
				fncDivideCssModule( 'macns2002' );
			}
		}

		// Other
		else
		{
			fncDivideCssModule( 'macother' );
		}
	}



	// Windows
	else if( g_strPlatfrom.indexOf( 'WIN32' ) > -1 )
	{
		// Opera
		if( g_strUserAgent.indexOf( 'OPERA' ) > -1 )
		{
			fncDivideCssModule( 'winopera' );
		}

		// InternetExplorer
		else if( g_strAppName.indexOf( 'MICROSOFT' ) > -1 )
		{
			var strVersionBuffer = g_strUserAgent.indexOf( 'MSIE ' , 0 ) + 5;
			var strVersionEval   = g_strUserAgent.indexOf( ';' , strVersionBuffer );
			var strVersion       = g_strUserAgent.substring( strVersionBuffer , strVersionEval );
			var lngVersion       = Number( strVersion );

			// デバッグ
			//alert( lngVersion );

			if( lngVersion == 5.5 )
			{
				fncDivideCssModule( 'winie' );
			}
			else if( lngVersion >= 6 )
			{
				fncDivideCssModule( 'winie' );
			}
			else
			{
				fncDivideCssModule( 'winieother' );
			}
		}

		// Netscape or Mozilla
		else if( g_strAppName.indexOf( 'NETSCAPE' ) > -1 )
		{
			var strVersionBuffer1 = g_strUserAgent.indexOf( 'GECKO/' , 0 ) + 6;
			var strVersionBuffer2 = g_strUserAgent.indexOf( 'GECKO/' , 0 ) + 10;
			var strVersionBuffer3 = g_strUserAgent.indexOf( 'GECKO/' , 0 ) + 14;

			var strVersion1       = g_strUserAgent.substring( strVersionBuffer1 , strVersionBuffer2 );
			var strVersion2       = g_strUserAgent.substring( strVersionBuffer1 , strVersionBuffer3 );

			var lngVersion1       = Number( strVersion1 );
			var lngVersion2       = Number( strVersion2 );

			// デバッグ
			//alert( lngVersion1 );

			if( lngVersion1 >= 2003 )
			{
				fncDivideCssModule( 'winns2003' );
			}
			else if( lngVersion2 <= 20010131 )
			{
				fncDivideCssModule( 'winnsother' );
			}
			else if( lngVersion1 < 2003 )
			{
				fncDivideCssModule( 'winns2002' );
			}
		}

		// Other
		else
		{
			fncDivideCssModule( 'winother' );
		}
	}



	// Other OS
	else
	{
		fncDivideCssModule( 'otheros' );
	}
*/




	//-------------------------------------------------------------------------
	// 概要 : スタイルシート振分処理モジュール
	//
	// 対象 : すべて
	//
	// @param  String  [strMode] : 動作振分処理文字列
	//-------------------------------------------------------------------------
	function fncDivideCssModule( strMode )
	{
		var strMacAlert = '';
		strMacAlert    += '本サイトは InternetExplorer 5以上、又は Netscape 6.1以上で最適化されています。\n';
		strMacAlert    += 'ご使用の環境ではページレイアウトが崩れる場合がございますので、ご注意ください。';

		var strWinAlert = '';
		strWinAlert    += '本サイトは InternetExplorer 5.5以上、又は Netscape 6.1以上で最適化されています。\n';
		strWinAlert    += 'ご使用の環境ではページレイアウトが崩れる場合がございますので、ご注意ください。';

		var strOSAlert  = '';
		strOSAlert     += '本サイトは Windows 又は MacOS で最適化されています。\n';
		strOSAlert     += 'ご使用の環境ではページレイアウトが崩れる場合がございますので、ご注意ください。';



		switch( strMode )
		{
			// Mac
			case 'macie':
				document.write( g_aryCss[strMode] );
				break;

			case 'macieother':
				document.write( g_aryCss[strMode] );
				alert( strMacAlert );
				break;

			case 'macsafari100':
				document.write( g_aryCss[strMode] );
				break;

			case 'macsafari85':
				document.write( g_aryCss[strMode] );
				break;

			case 'macns2003':
				document.write( g_aryCss[strMode] );
				break;

			case 'macns2002':
				document.write( g_aryCss[strMode] );
				break;

			case 'macnsother':
				alert( strMacAlert );
				break;

			case 'macopera':
				document.write( g_aryCss[strMode] );
				break;

			case 'macother':
				document.write( g_aryCss[strMode] );
				alert( strMacAlert );
				break;



			// Windows
			case 'winie':
				document.write( g_aryCss[strMode] );
				break;

			case 'winieother':
				document.write( g_aryCss[strMode] );
				alert( strWinAlert );
				break;

			case 'winns2003':
				document.write( g_aryCss[strMode] );
				break;

			case 'winns2002':
				document.write( g_aryCss[strMode] );
				break;

			case 'winnsother':
				document.write( g_aryCss[strMode] );
				alert( strWinAlert );
				break;

			case 'winopera':
				document.write( g_aryCss[strMode] );
				break;

			case 'winother':
				document.write( g_aryCss[strMode] );
				alert( strWinAlert );
				break;



			// Other OS
			case 'otheros':
				document.write( g_aryCss[strMode] );
				alert( strOSAlert );
				break;



			default:
				break;
		}
		return false;
	}





	//-------------------------------------------------------------------------
	// 概要 : 西暦表示関数
	//
	// 解説 : サーバサイド(PHP)より取得した西暦を、対象オブジェクトに代入し表示させる。
	//
	// 対象 : すべて
	//
	// @param  String  [strNum] : 西暦取得用オブジェクト
	// @param  Object  [objId]  : 表示対象オブジェクト
	//
	// @event [onload] : body
	//-------------------------------------------------------------------------
	function fncCommonGetYear( strNum, objId )
	{
		var strY = document.getElementById( strNum ).value;
		document.getElementById( objId ).innerHTML = strY
	}





	//-------------------------------------------------------------------------
	// 概要 : ラジオボタン項目チェック処理関数
	//-------------------------------------------------------------------------
	function fncCheckRadioBtn( obj )
	{
		var i;
		var blnCheck = false;

		// 選択肢が複数ある場合
		if( obj.length )
		{
			for( i = 0; i < obj.length; i ++ )
			{
				if( obj[i].checked )
				{
					blnCheck = true;
					break;
				}
			}
		}
		// 選択肢が1つだけの場合
		else
		{
			if( obj.checked ) blnCheck = true;
		}

		return blnCheck;
	}
	//-------------------------------------------------------------------------
	// 概要 : フォーム必須項目チェック処理関数
	//
	// 対象 : フォームオブジェクト
	//
	// 外部関数 [fncEmailCheckModule] : Email型チェックモジュール
	//          [fncQueryModule]      : クエリー処理モジュール
	//
	// @param  Object  [objFrm]   : フォームオブジェクトName
	// @param  Object  [objEmail] : Email入力欄オブジェクトID
	// @param  Array   [aryObj]   : 必須項目オブジェクトID
	//
	// @event [onclick] : 対象オブジェクト
	//-------------------------------------------------------------------------
	function fncCommonCheckFormElements( objFrm , objEmail , aryObj )
	{
		// 今回のお問い合わせ
		if( ( !document.getElementById( 'strOrderTypeA' ).checked ) &&
			( !document.getElementById( 'strOrderTypeB' ).checked ) )
		{
			alert( '必須項目を入力してください。' );
			return false;
		}
		// Q1. 当システムおよび商品の活用イメージをお答えください。
		if( !fncCheckRadioBtn( window.frmOrderQuery.strUse ) )
		{
			alert( '必須項目を入力してください。' );
			return false;
		}
		// Q3. 開業予定または導入予定はいつ頃ですか？
		if( !fncCheckRadioBtn( window.frmOrderQuery.strOpen ) )
		{
			alert( '必須項目を入力してください。' );
			return false;
		}
		// ご希望の連絡方法
		if( !fncCheckRadioBtn( window.frmOrderQuery.strCall ) )
		{
			alert( '必須項目を入力してください。' );
			return false;
		}


		for( i in aryObj )
		{
			if( trim( document.getElementById( aryObj[i] ).value ) == "" )
			{
				fncCommonQueryModule( 'Error' );
				return false;
			}
		}

		// 空欄が存在しない場合、Email型チェックへ
		fncCommonEmailCheckModule( objFrm , objEmail );

		return false;
	}
	//-------------------------------------------------------------------------
	// 概要 : Email型チェックモジュール
	//
	// 外部関数 : [fncCommonQueryModule] クエリーモジュール
	//
	// @param  Object  [objFrm]   : フォームオブジェクトName
	// @param  Object  [objEmail] : Email入力欄オブジェクトID
	//
	// @event [onclick] : 対象オブジェクト
	//-------------------------------------------------------------------------
	function fncCommonEmailCheckModule( objFrm , objEmail )
	{
		var strEmailAddr; // Email文字列取得用変数

		strEmailAddr = document.getElementById( objEmail ).value;


		// EmailAddressの形式が正しい場合
		if( strEmailAddr.match(/.*@.*\..*/i) )
		{
			fncCommonQueryModule( 'Submit' , objFrm );
		}
		// EmailAddressの形式が不正な場合
		else
		{
			fncCommonQueryModule( 'EmailError' , objFrm );
		}

		return false;
	}
	//-------------------------------------------------------------------------
	// 概要 : クエリー処理モジュール
	//
	// 外部関数 [fncCommonCheckFormElements] : フォーム必須項目チェック処理関数
	//
	// @param  Object  [strMode] : 処理モード文字列
	// @param  Object  [objFrm]  : フォームオブジェクトName
	//-------------------------------------------------------------------------
	function fncCommonQueryModule( strMode , objFrm )
	{
		switch( strMode )
		{
			case 'Submit':
				if( g_strUserAgent.indexOf( 'FIREFOX' ) > -1 )
				{
					document.getElementById( "hiddenSubmitBtn" ).click();
				}
				else
				{
					objFrm.submit();
				}
				break;

			case 'Reset':
				objFrm.reset();
				break;

			case 'EmailError':
				alert( 'メールアドレスの形式が不正です。正しく入力してください。' );
				break;

			case 'Error':
				alert( '必須項目を入力してください。' );
				break;

			default:
				break;
		}

		return false;
	}


	//-------------------------------------------------------------------------
	// 概要 : ウィンドウオープン関数
	//
	// 対象 : 対象オブジェクト
	//
	// 外部関数 : [fncCommonPopupWindowModule] . ウィンドウオープンモジュール
	//
	// @param  String  [strURL]     : URL文字列
	// @param  String  [strWidth]   : Width値文字列
	// @param  String  [strHeight]  : Height値文字列
	// @param  String  [strXpos]    : X座標値文字列
	// @param  String  [strYpos]    : Y座標値文字列
	// @param  String  [strWinName] : ウィンドウ名文字列
	// @param  String  [strScroll]  : スクロールバー可否文字列
	//
	// @event [onclick] : 対象オブジェクト
	//-------------------------------------------------------------------------
	function fncCommonPopupWindow( strURL, strWidth, strHeight, strXpos, strYpos, strWinName, strScroll )
	{
		// Safariの場合
		if( navigator.userAgent.indexOf( 'Safari' ) > -1 )
		{
			// 文字列を数値に変換
			var lngWidth  = Number( strWidth )  + 2;
			var lngHeight = Number( strHeight ) + 2;

			// 数値を文字列に変換
			strNewWidth  = String( lngWidth );
			strNewHeight = String( lngHeight );

			fncCommonPopupWindowModule( strURL, strNewWidth, strNewHeight, strXpos, strYpos, strWinName, strScroll );
		}
		else
		{
			fncCommonPopupWindowModule( strURL, strWidth, strHeight, strXpos, strYpos, strWinName, strScroll );
		}

		return false;
	}
	//-------------------------------------------------------------------------
	// 概要 : ウィンドウオープン・パラメータ設定関数
	//
	// 外部関数 : [fncCommonPopupWindow] . ウィンドウオープン関数
	//
	// @param  String  [strURL]         : URL文字列
	// @param  String  [strWidth]       : Width値文字列
	// @param  String  [strHeight]      : Height値文字列
	// @param  String  [strXpos]        : X座標値文字列
	// @param  String  [strYpos]        : Y座標値文字列
	// @param  String  [strWinName]     : ウィンドウ名文字列
	// @param  String  [strScroll]      : スクロールバー可否文字列
	// @param  Object  [strWindowStyle] : ウィンドウスタイル定義用変数
	//-------------------------------------------------------------------------
	function fncCommonPopupWindowModule( strURL, strWidth, strHeight, strXpos, strYpos, strWinName, strScroll )
	{
		var strWindowStyle = '';

		strWindowStyle += 'top=' + strXpos + ' , ';
		strWindowStyle += 'left=' + strYpos + ' , ';
		strWindowStyle += 'width='  + strWidth + ' , ';
		strWindowStyle += 'height=' + strHeight + ' , ';
		strWindowStyle += 'scrollbars=' + strScroll;

		// デバッグ
		//alert( strWindowStyle );

		newW = window.open( strURL , strWinName , strWindowStyle );

		return false;
	}


	//-------------------------------------------------------------------------
	// 概要 : 印刷処理関数
	//-------------------------------------------------------------------------
	function fncCommonWindowPrint()
	{
		var strMessage = 'お客様のブラウザでプリントアウトされる場合は、ファイルメニューの「印刷」オプションを使って出力するか、次のショートカットキーで印刷できます。Windows：「Ctrlキーを押しながらP」　Mac：「Commandキーを押しながらP」';

		// [print()]関数が有効な場合
		if( window.print )
		{
			window.print();
		}
		// [print()]関数が有効でない場合
		else
		{
			alert( strMessage );
		}

		return false;
	}


	//-------------------------------------------------------------------------
	// 概要 : 汎用イメージ変更処理
	//-------------------------------------------------------------------------
	function fncChangeImage( strID, strPath )
	{
		document.getElementById( strID ).src = strPath;

		return false;
	}



	//-------------------------------------------------------------------------------------------------
	// 概要 : ツリーメニュー表示・非表示処理関数
	//
	// @param	String	[objId]	: ツリーメニューオブジェクト
	//-------------------------------------------------------------------------------------------------
	function fncTreeMenu( objId )
	{
		var objMenu	= document.getElementById( objId );

		if( objMenu.style.display == "none" )
		{
			objMenu.style.display	= "block";
		}
		else
		{
			objMenu.style.display	= "none";
		}

		return true;
	}
