/**
  *	common.js
  *
  *	@auther		A.OG
  *	@history		1.10	2009/06/21	create new
  *	@description
  *
  *	@URL	http://www.ishii.goodskier.com/
  */


var	TRUE = true ;
var	SET = true ;
var	FALSE = false ;
var	RESET = false ;

var	DEF_COEF_UTC_DAY	= 24*60*60*1000 ;		/* UTCm秒→日変換係数 */
var	TODAY ;

var	DEF_RELATIVE_DIR_ROOT		= 1 ;	/*	ルートディレクトリ	*/
var	DEF_RELATIVE_DIR_ABSOLUTE	= 0 ;	/*	絶対ＵＲＬ指定		*/
var	DEF_RELATIVE_DIR_UNDER_1	= -1 ;	/*	ルートより１階層下	*/
var	DEF_RELATIVE_DIR_UNDER_2	= -2 ;	/*	ルートより２階層下	*/


/*
 *		ブラウザ情報
 */
var	DEF_BROWSER_TYPE_IE			= 1 << 5 ;	/*	Internet Explorer	*/
var	DEF_BROWSER_TYPE_NN			= 1 << 6 ;	/*	Netscape Navigator	*/
var	DEF_BROWSER_TYPE_SAFARI		= 1 << 7 ;	/*	Safari				*/
var	DEF_BROWSER_TYPE_FIREFOX	= 1 << 8 ;	/*	Firefox				*/
var	DEF_BROWSER_TYPE_MOZILLA	= 1 << 9 ;	/*	Mozill				*/
var	DEF_BROWSER_TYPE_OPERA		= 1 << 10 ;	/*	Opera				*/

var	DEF_BROWSER_TYPE_IE3 = parseInt( "0011", 2 ) | DEF_BROWSER_TYPE_IE ;	/*	MSIE 3.xx				*/
var	DEF_BROWSER_TYPE_IE4 = parseInt( "0100", 2 ) | DEF_BROWSER_TYPE_IE ;	/*	MSIE 4.xx				*/
var	DEF_BROWSER_TYPE_IE5 = parseInt( "0101", 2 ) | DEF_BROWSER_TYPE_IE ;	/*	MSIE 5.xx				*/
var	DEF_BROWSER_TYPE_IE6 = parseInt( "0110", 2 ) | DEF_BROWSER_TYPE_IE ;	/*	MSIE 6.xx				*/
var	DEF_BROWSER_TYPE_IE7 = parseInt( "0111", 2 ) | DEF_BROWSER_TYPE_IE ;	/*	MSIE 7.xx				*/
var	DEF_BROWSER_TYPE_IE8 = parseInt( "1000", 2 ) | DEF_BROWSER_TYPE_IE ;	/*	MSIE 8.xx??				*/

var	DEF_BROWSER_TYPE_NN2 = parseInt( "0010", 2 ) | DEF_BROWSER_TYPE_NN ;	/*	Netscape Navigator 2.X	*/
var	DEF_BROWSER_TYPE_NN3 = parseInt( "0011", 2 ) | DEF_BROWSER_TYPE_NN ;	/*	Netscape Navigator 3.X	*/
var	DEF_BROWSER_TYPE_NN4 = parseInt( "0100", 2 ) | DEF_BROWSER_TYPE_NN ;	/*	Netscape Navigator 4.X	*/
var	DEF_BROWSER_TYPE_NN5 = parseInt( "0101", 2 ) | DEF_BROWSER_TYPE_NN ;	/*	Netscape Navigator 5.X	*/
var	DEF_BROWSER_TYPE_NN6 = parseInt( "0110", 2 ) | DEF_BROWSER_TYPE_NN ;	/*	Netscape Navigator 6.X	*/
var	DEF_BROWSER_TYPE_NN7 = parseInt( "0111", 2 ) | DEF_BROWSER_TYPE_NN ;	/*	Netscape Navigator 7.X	*/
var	DEF_BROWSER_TYPE_NN8 = parseInt( "1000", 2 ) | DEF_BROWSER_TYPE_NN ;	/*	Netscape Navigator 8.X	*/
/*
 *	Safari/Firefox/Operaはバージョン情報がない？ので大元定義のみ
 */
var	DEF_BROWSER_TYPE_MOZILLA1 = parseInt( "0001", 2 ) | DEF_BROWSER_TYPE_MOZILLA ;	/*	Mozill				*/

/*	DOMオブジェクト参照タイプ	*/
var	DEF_REF_DOM_TYPE_ALL		= 0 ;		/*	all['id']				IE系					*/
var	DEF_REF_DOM_TYPE_ELEMENT	= 1 ;		/*	getElementById('id')	Firefox/Opera/Safari	*/
var	DEF_REF_DOM_TYPE_LAYERS		= 2 ;		/*	layers['id']			unconfirmed				*/
var	DEF_REF_DOM_TYPE_UNKNOWN	= 3 ;		/*	unknown...				unknown					*/




/*
 *		今日の Date インスタンスを取得する
 */
var	fWebServerLocalTimeScriptCheck = FALSE ;
function getTodayInst() {
	if( typeof(webServerLocalTime) == "undefined" ) {
		if( !fWebServerLocalTimeScriptCheck ) {
			alert( "this html needs srv_localtime.js." ) ;
			fWebServerLocalTimeScriptCheck = TRUE ;
		}
		TODAY = new Date() ;
	}
	else {
		TODAY = new Date(webServerLocalTime) ;
	}
	return( TODAY ) ;
}

/*
 *	引数がDate型インスタンスであるか判定する。
 *
 *	@param	target	被判定インスタンス。
 *
 *	@return	引数がDate型オブジェクトであればTRUE、それ以外はFALSE
 */
function isDateInst( target ) {
	var	tmp = (new Object(target)).toString() ;
	return	( ( tmp.indexOf("GMT",0)!=-1 || tmp.indexOf("UTC",0)!=-1 ) ? TRUE : FALSE ) ;
}

/*
 *	指定日時を経過したかどうかを返す（日単位）
 *
 *	@param	target		経過判定する日時インスタンス。
 */
function isTimeupByDate( target ) {
	var	tmp = ( isDateInst(target) ) ? target.getTime() : (new Date(target)).getTime() ;
	return	( ( ( (tmp - (getTodayInst()).getTime())/DEF_COEF_UTC_DAY )<0 ) ? TRUE : FALSE ) ;
}

/*
 *	指定日時を経過したかどうかを返す（秒単位）
 *
 *	@param	target	経過判定する日時インスタンス。
 */
function isTimeupByDateTime( target ) {
	var	tmp = ( isDateInst(target) ) ? target.getTime() : (new Date(target)).getTime() ;
	return	( ((tmp/1000 - (getTodayInst()).getTime()/1000)<0) ? TRUE : FALSE ) ;
}
/*
 *	指定日時までの残時間（秒）を取得する。
 *
 *	@param	target	残時間を取得する日時インスタンス。
 */
function getTimeupRemainSec( target ) {
	var	tmp = ( isDateInst(target) ) ? target.getTime() : (new Date(target)).getTime() ;
	var	remain = tmp/1000 - (getTodayInst()).getTime()/1000 ;
	return	( (( remain>0 ) ? Math.floor(remain) : Math.ceil(remain)) ) ;
}
/*
 *	指定日時までの残日数を取得する。
 *
 *	@param	target	残時間を取得する日時インスタンス。
 */
function getTimeupRemainDate( target ) {
	var	tmp = ( isDateInst(target) ) ? target.getTime() : (new Date(target)).getTime() ;
	var	remain = tmp/DEF_COEF_UTC_DAY - (getTodayInst()).getTime()/DEF_COEF_UTC_DAY ;
	return	( (( remain>0 ) ? Math.floor(remain) : Math.ceil(remain)) ) ;
}


/*
 *	日付情報を示す文字列から日付設定用文字列を取得する。
 *
 *		2009/08/22	→	2009/08/02
 *		2009/08		→	2009/08/(01)（日付は自動的に01を設定）
 *		8/22		→	(2010)/08/22
 *						※(2010)は営業活動のメインターゲット年の定義を参照する
 *
 *	@param	strDate	日付情報
 */
var	fTagetSeasonYearCheck = FALSE ;
function getDateInfoStr( strDate ) {
	var		date, ret ;
	var		year, month ;

	year = (getTodayInst()).getFullYear() ;
	month = (getTodayInst()).getMonth()+1 ;

	if ( (ret=strDate.match("(\\d{4})/(\\d+)/(\\d+)")) ) {
    	/*	ex) 2009/08/15	*/
		date = sprintf( "%04d/%02d/%02d", ret[1], ret[2], ret[3] ) ;
	}
	else if ( (ret=strDate.match("(\\d{4})/(\\d+)")) ) {
    	/*	ex) 2009/08	*/
		date = sprintf( "%04d/%02d/%02d", ret[1], ret[2], 1 ) ;
	}
	else if ( (ret=strDate.match("(\\d+)/(\\d+)")) ) {

		if( typeof(DEF_TARGET_SEASON_YEAR) == "undefined" && !fTagetSeasonYearCheck ) {
			alert( "undefined [DEF_TARGET_SEASON_YEAR]" ) ;
			DEF_TARGET_SEASON_YEAR = getTodayInst() ;
			fTagetSeasonYearCheck = TRUE ;
		}

    	/*	ex) 8/15	*/
		month = ret[1] ;
		if( month>=1 && month<=5 ) {
			/*	それ以外はターゲットのシーズンと判断	*/
			/*	1～5月はターゲットのシーズンと判断	*/
			year = DEF_TARGET_SEASON_YEAR ;
		}
		else {
			/*	それ以外は前シーズンと判断	*/
			year = DEF_TARGET_SEASON_YEAR - 1 ;
		}
		date = sprintf( "%04d/%02d/%02d", year, month, ret[2] ) ;
	}
	else {
		/*
		 *	仕様外の日付文字列フォーマット
		 *	本日の日付とする
		 */
		alert( "unsuppoted date format!!\n[ " + strDate + "]" ) ;
		date = sprintf( "%04d/%02d/%02d", year, month, TODAY.getDate() ) ;
	}
	return( date ) ;
}


/*
 *	インスタンスの曜日文字列を取得する。
 *
 *	@param	date	Date型インスタンス。
 *
 *	@return	曜日文字列。
 */
function getDayLabelJpn( date ) {
	var strDay = new Array("日","月","火","水","木","金","土");
	var	tmp = ( isDateInst(date) ) ? date.getDay() : (new Date(date)).getDay() ;
	return	( strDay[ tmp ] ) ;
}
function getDayLabel( date ) {
	var strDay = new Array("Sun","Mon","Tue","Wed","Thr","Fri","Sat");
	var	tmp = ( isDateInst(date) ) ? date.getDay() : (new Date(date)).getDay() ;
	return	( strDay[ tmp ] ) ;
}

/*
 *	Date型インスタンスから表示用成形文字列を取得する。
 *
 *	@param	date	Date型インスタンス。
 *
 *	@return	曜日文字列。
 */
var		DEF_DATE_STR_TYPE_FULLSET		= 0 ;	/*	2010/01/01 12:34:00	*/
var		DEF_DATE_STR_TYPE_YYYYMMDD		= 1 ;	/*	2010/01/01	*/
var		DEF_DATE_STR_TYPE_MD			= 2 ;	/*	1/1			*/
var		DEF_DATE_STR_TYPE_MDd			= 3 ;	/*	1/1(mon)	*/
var		DEF_DATE_STR_TYPE_YYYYMMDD_JPN	= 4 ;	/*	2010月1月1日	*/
var		DEF_DATE_STR_TYPE_YYYYMMDDd_JPN	= 5 ;	/*	2010月1月1日（月）	*/
var		DEF_DATE_STR_TYPE_MD_JPN		= 6 ;	/*	1月1日			*/
var		DEF_DATE_STR_TYPE_MDd_JPN		= 7 ;	/*	1月1日（月）	*/

/*	2010/01/01 12:34:00		*/	function getFormedDateStrFullset		(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_FULLSET		, FALSE ));	}	
/*	2010/01/01				*/	function getFormedDateStrYYYYMMDD		(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_YYYYMMDD		, FALSE ));	}	
/*	1/1						*/	function getFormedDateStrMD				(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_MD				, FALSE ));	}	
/*	1/1(mon)				*/	function getFormedDateStrMDd			(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_MDd			, FALSE ));	}	
/*	2010月1月1日			*/	function getFormedDateStrYYYYMMDD_JPN	(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_YYYYMMDD_JPN	, FALSE ));	}	
/*	2010月1月1日（月）		*/	function getFormedDateStrYYYYMMDDd_JPN	(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_YYYYMMDDd_JPN	, FALSE ));	}	
/*	1月1日					*/	function getFormedDateStrMD_JPN			(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_MD_JPN			, FALSE ));	}	
/*	1月1日（月）			*/	function getFormedDateStrMDd_JPN		(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_MDd_JPN		, FALSE ));	}	
/*	２０１０月１月１日		*/	function getFormedDateStrYYYYMMDD_JPN2	(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_YYYYMMDD_JPN	, TRUE ));	}	
/*	２０１０月１月１日（月）*/	function getFormedDateStrYYYYMMDDd_JPN2	(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_YYYYMMDDd_JPN	, TRUE ));	}	
/*	１月１日				*/	function getFormedDateStrMD_JPN2		(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_MD_JPN			, TRUE ));	}	
/*	１月１日（月）			*/	function getFormedDateStrMDd_JPN2		(dateOrg) {	return( getFormedDateStr( dateOrg, DEF_DATE_STR_TYPE_MDd_JPN		, TRUE ));	}	

/*
 *	Date型インスタンスから表示用成形文字列を取得する。
 *
 *	@param	date	被成形データ（Date型インスタンス他）。
 *			type	変換タイプ。
 *			fJIS	半角→全角指示。
 *
 *	@return	曜日文字列。
 */
function getFormedDateStr( dateOrg, type, fJIS ) {
	var		instDate = ( isDateInst(dateOrg) ) ? dateOrg : new Date(dateOrg) ;
	var		year = instDate.getFullYear() ;
	var		month = instDate.getMonth()+1 ;
	var		date = instDate.getDate() ;

	var		strYear =	toJis( sprintf("%4d",year) ) ;
	var		strMonth = 	toJis( sprintf("%d",month) ) ;
	var		strDate =	toJis( sprintf("%d",date) ) ;

	var		buf ;


	switch( type ) {
	case DEF_DATE_STR_TYPE_FULLSET:			/*	2010/01/01 12:34:00	*/
		buf = sprintf( "%4d/%02d/%02d %02d:%02d:%02d", year, month, date, instDate.getHours(), instDate.getMinutes(), instDate.getSeconds() ) ;
		break ;

	case DEF_DATE_STR_TYPE_YYYYMMDD:		/*	2010/01/01	*/
	default:
		buf = sprintf( "%4d/%02d/%02d", year, month, date ) ;
		break ;

	case DEF_DATE_STR_TYPE_MD:				/*	1/1			*/
		buf = sprintf( "%d/%d", month, date ) ;
		break ;

	case DEF_DATE_STR_TYPE_MDd:				/*	1/1(mon)	*/
		buf = sprintf( "%d/%d(%s)", month, date, getDayLabel(dateOrg) ) ;
		break ;

	case DEF_DATE_STR_TYPE_YYYYMMDD_JPN:	/*	2010月1月1日	*/
		if( fJIS ) {
			/*	半角→全角指示	*/
			buf = sprintf( "%s年%s月%s日", strYear, strMonth, strDate ) ;
		}
		else {
			buf = sprintf( "%4d年%d月%d日", year, month, date ) ;
		}
		break ;

	case DEF_DATE_STR_TYPE_YYYYMMDDd_JPN:	/*	２０１０月１月１日（月）	*/
		if( fJIS ) {
			/*	半角→全角指示	*/
			buf = sprintf( "%s年%s月%s日(%s)", strYear, strMonth, strDate, getDayLabelJpn(dateOrg) ) ;
		}
		else {
			buf = sprintf( "%4d年%d月%d日(%s)", year, month, date, getDayLabelJpn(dateOrg) ) ;
		}
		break ;
		break ;

	case DEF_DATE_STR_TYPE_MD_JPN:			/*	1月1日			*/
		if( fJIS ) {
			/*	半角→全角指示	*/
			buf = sprintf( "%s月%s日", strMonth, strDate ) ;
		}
		else {
			buf = sprintf( "%d月%d日", month, date ) ;
		}
		break ;

	case DEF_DATE_STR_TYPE_MDd_JPN:			/*	1月1日（月）	*/
		if( fJIS ) {
			/*	半角→全角指示	*/
			buf = sprintf( "%s月%s日(%s)", strMonth, strDate, getDayLabelJpn(dateOrg) ) ;
		}
		else {
			buf = sprintf( "%d月%d日(%s)", month, date, getDayLabelJpn(dateOrg) ) ;
		}
		break ;
	}

	return( buf ) ;
}


/*	アンカーをセットする	*/
function putPageAnchor( anchor ) {
	document.write( sprintf( "<a id='%s' name='%s'></a>", anchor, anchor ) ) ;
}


/*
 *		ダミーHTMLデータ挿入
 */
function putDummyHTML( rep ) {
	var		msg="" ;
	var		hh, ii, rep ;
	var		msgr="" ;
	if( typeof(rep)=="undefined" ) {
		rep = 30 ;
	}
	else {
		rep = parseInt(rep,10) ;
	}
	
	for( ii=0; ii<rep; ii++ ) {
		msgr += "本文テスト" ;
	}
	for( hh=1; hh<7; hh++ ) {
		msg += sprintf( "<h%d>見出し  h%d</h%d>", hh, hh, hh ) ;
		msg += "<p>" + msgr + "</p>" ;
	}
	msg += "<hr />" ;
	for( hh=1; hh<7; hh++ ) {
		msg += sprintf( "<h%d><a href=''>linked 見出し  h%d</a></h%d>", hh, hh, hh ) ;
		msg += "<p>" + msgr + "</p>" ;
	}
	msg += "<p><a href=''>リンク本文テスト</a></p>" ;
	document.write( msg ) ;
}


/*
 *		ダミー800pxテーブルデータ挿入
 */
function putDummyHTML800pxTable() {
	var		msg="" ;
	msg += "<table cellspacing='0' cellpadding='0' border='1' style='width:800px;margin:0px auto;background-color:#222222;color:#ffffff;'>" ;
	msg += "<tr><td style='text-align:center;'>800px (on debug...)</td></tr></table>" ;
	document.write( msg ) ;
}


/*
 *	【download Adobe READER】を表示する。
 *
 *	@param	relative	ルートからの相対ディレクトリ。
 *			prm			表示幅。
 *						"auto"/未指定	自動表示（スタイルシートの'auto'）
 *						数値			数値に示される幅で表示
 */
function putGetAcrobatReader( relative, prm ) {
	document.write( getGetAcrobatReaderHTML( relative, prm ) ) ;
}
function getGetAcrobatReaderHTML( relative, prm ) {
	var		msg="" ;
	var	width ;
	var	widthWord ;
	var	urlWord ;
	var	imgFileName = "get_adobe_reader_160x41.jpg" ;
	var	imgWidth = 160 ;
	var	imgHeight = 41 ;

	urlWord = getRelaticeDirInfo(relative) + "images/adobe/" + imgFileName ;

	if( prm=="auto" || typeof(prm) == "undefined" ) {
		widthWord = "width:auto;" ;
	}
	else if( !isNaN(prm) ) {
		width = parseInt( prm,10 ) ;
		if( width<200 ) {
			width = 200 ;
		}
		else if( width>640 ) {
			width = 640 ;
		}
		widthWord = sprintf( "width:%dpx;", width ) ;
	}
	else {
		alert("引数 prm["+prm+"] が数値でない") ;
		widthWord = "width:auto;" ;
	}

	msg += sprintf( "<div class='get-acrobat' style='%s'>", widthWord ) ;
	msg += "<a href='http://www.adobe.com/jp/products/acrobat/readstep2.html' target='_blank' alt='Adobe Readerのダウンロード'>" ;
	msg += sprintf( "<img src='%s' width='%d' height='%d' alt='Adobe Reader'></a>", urlWord, imgWidth, imgHeight ) ;

	msg += "※<acronym title='Portable Document Format'>PDF</acronym>" ;
	msg += "形式の文書を閲覧するには、PDF形式ファイルを読み込む為のAdobe Reader(R)等のソフトが必要です。" ;
	msg += "お持ちでない方は、<a href='http://www.adobe.com/jp/products/acrobat/readstep2.html' title='Adobe Reader' target='_blank'>こちら</a>からダウンロードをお願いします。<br />" ;
	msg += "※Adobe、AcrobatおよびAcrobatロゴは、" ;
	msg += "<a href='http://www.adobe.com/' target='_blank' title='アドビシステムズ'>" ;
	msg += "Adobe Systems Incorporated(アドビシステムズ社)</a>の商標です。" ;
	msg += "</div>" ;

	return( msg ) ;
}


/*
 *	【download Adobe Flash】を表示する。
 *
 *	@param	relative	ルートからの相対ディレクトリ。
 *			prm			表示幅。
 *						"auto"/未指定	自動表示（スタイルシートの'auto'）
 *						数値			数値に示される幅で表示
 */
function putGetFlashPlayer( relative, prm ) {
	document.write( getGetFlashPlayerHTML( relative, prm ) ) ;
}
function getGetFlashPlayerHTML( relative, prm ) {
	var		msg="" ;
	var	width ;
	var	widthWord ;
	var	urlWord ;
	var	imgFileName = "get_adobe_flash_player.png" ;
	var	imgWidth = 158 ;
	var	imgHeight = 39 ;

	urlWord = getRelaticeDirInfo(relative) + "images/adobe/" + imgFileName ;

	if( prm=="auto" || typeof(prm) == "undefined" ) {
		widthWord = "width:auto;" ;
	}
	else if( !isNaN(prm) ) {
		width = parseInt( prm,10 ) ;
		if( width<200 ) {
			width = 200 ;
		}
		else if( width>640 ) {
			width = 640 ;
		}
		widthWord = sprintf( "width:%dpx;", width ) ;
	}
	else {
		alert("引数 prm["+prm+"] が数値でない") ;
		widthWord = "width:auto;" ;
	}

	msg += sprintf( "<div class='get-flash-player' style='%s'>", widthWord ) ;
	msg += "<a href='http://www.adobe.com/jp/products/flashplayer/' target='_blank' alt='Adobe Flash Playerのダウンロード'>" ;
	msg += sprintf( "<img src='%s' width='%d' height='%d' alt='Adobe Flash Player'></a>", urlWord, imgWidth, imgHeight ) ;

	msg += "Flash形式のコンテンツを閲覧するには、Adobe Flash Player(R)等のソフトが必要です。" ;
	msg += "お持ちでない方は、<a href='http://www.adobe.com/jp/products/flashplayer/' title='Adobe Flash Player 10' target='_blank'>こちら</a>からダウンロードをお願いします。<br />" ;
	msg += "※Adobe、FlashおよびFlashロゴは、" ;
	msg += "<a href='http://www.adobe.com/' title='アドビシステムズ'>Adobe Systems Incorporated(アドビシステムズ社)</a>の商標です。" ;
	msg +=  "</div>" ;

	return( msg ) ;
}


/*
 *	ルートからの相対ディレクトリ情報を取得する。
 *
 *	@param	relative	ルートからの相対ディレクトリ。
 *						DEF_RELATIVE_DIR_ABSOLUTE	絶対ＵＲＬ
 *						DEF_RELATIVE_DIR_UNDER_1	ルートより１階層下
 *						DEF_RELATIVE_DIR_UNDER_2	ルートより２階層下
 *						DEF_RELATIVE_DIR_ROOT		ルートディレクトリ
 *
 *	@return	relative	ルートからの相対ディレクトリ情報。
 */
function getRelaticeDirInfo( relative ) {
	var		dirWord ;

	if( typeof(relative) == "undefined" ) {
		relative = DEF_RELATIVE_DIR_ROOT ;
	}

	switch( relative ) {
	case	DEF_RELATIVE_DIR_ABSOLUTE:	/*	絶対ＵＲＬ	*/
		dirWord = "http://www.ishii.goodskier.com/" ;
		break ;
	case	DEF_RELATIVE_DIR_UNDER_1:	/*	ルートより１階層下	*/
		dirWord = "../" ;
		break ;
	case	DEF_RELATIVE_DIR_UNDER_2:	/*	ルートより２階層下	*/
		dirWord = "../../" ;
		break ;
	case	DEF_RELATIVE_DIR_ROOT:		/*	ルートディレクトリ	*/
	default:
		dirWord = "./" ;
		break ;
	}

	return( dirWord ) ;
}



/*
 *		ブラウザ情報・ブラウザコードを取得
 */
function showBrowserInfo() {
	document.write( getBrowserInfoWord() ) ;
}
function getBrowserInfoWord() {
	var		browser ;
	var		msg = "" ;
	var		appName ;
	var		userAgent ;
	var		appVersion ;
	var		appCodeName ;
	var		platform ;

	msg += "Internet Explorer = "	+ DEF_BROWSER_TYPE_IE		+ "\n" ;
	msg += "Netscape Navigator = "	+ DEF_BROWSER_TYPE_NN		+ "\n" ;
	msg += "Safari = "				+ DEF_BROWSER_TYPE_SAFARI	+ "\n" ;
	msg += "Firefox = "				+ DEF_BROWSER_TYPE_FIREFOX	+ "\n" ;
	msg += "Mozilla = "				+ DEF_BROWSER_TYPE_MOZILLA	+ "\n" ;
	msg += "Opera = "				+ DEF_BROWSER_TYPE_OPERA	+ "\n" ;
	msg += "====\n" ;

	msg +=  "this browser = " + getBrowserCode() + "\n" ;
	msg += "====\n" ;


	msg += "MSIE\n" ;
	msg += "3.X = " + DEF_BROWSER_TYPE_IE3 + " / " ;
	msg += "4.X = " + DEF_BROWSER_TYPE_IE4 + " / " ;
	msg += "5.X = " + DEF_BROWSER_TYPE_IE5 + " / " ;
	msg += "6.X = " + DEF_BROWSER_TYPE_IE6 + "\n" ;
	msg += "7.X = " + DEF_BROWSER_TYPE_IE7 + " / " ;
	msg += "8.X = " + DEF_BROWSER_TYPE_IE8 + "\n" ;
	msg += "====\n" ;
	msg += "Netscape Navigator\n" ;
	msg += "2.X = " + DEF_BROWSER_TYPE_NN2 + " / " ;
	msg += "3.X = " + DEF_BROWSER_TYPE_NN3 + " / " ;
	msg += "4.X = " + DEF_BROWSER_TYPE_NN4 + " / " ;
	msg += "5.X = " + DEF_BROWSER_TYPE_NN5 + "\n" ;
	msg += "6.X = " + DEF_BROWSER_TYPE_NN6 + " / " ;
	msg += "7.X = " + DEF_BROWSER_TYPE_NN7 + " / " ;
	msg += "8.X = " + DEF_BROWSER_TYPE_NN8 + "\n" ;
	msg += "====\n" ;

	msg += "Mozilla 1.xx = " + DEF_BROWSER_TYPE_MOZILLA1 + "\n" ;
	msg += "====\n" ;


	appName     = navigator.appName ;
	userAgent   = navigator.userAgent ;
	appVersion  = navigator.appVersion ;
	appCodeName = navigator.appCodeName ;
	platform    = navigator.platform ;

	msg += "ブラウザ　　　　　" + appName     + "\n" ;
	msg += "エージェント　　　" + userAgent   + "\n" ;
	msg += "バージョン　　　　" + appVersion  + "\n" ;
	msg += "コードネーム　　　" + appCodeName + "\n" ;
	msg += "プラットフォーム　" + platform    + "\n" ;

	return( msg ) ;
}
function getBrowserCode() {
	var		appName     = navigator.appName ;		/*	ブラウザの取得		*/
	var		userAgent   = navigator.userAgent ;		/*	エージェントの取得	*/
	var		appVersion  = navigator.appVersion ;	/*	バージョンの取得	*/
	var		code ;

	if( appName.charAt(0)=="N" ) {
		if(appVersion.charAt(0)==2){ code = DEF_BROWSER_TYPE_NN2; }
		if(appVersion.charAt(0)==3){ code = DEF_BROWSER_TYPE_NN3; }
		if(appVersion.charAt(0)==4){ code = DEF_BROWSER_TYPE_NN4; }
		if(appVersion.charAt(0)==5){ 
			if (userAgent.indexOf("Netscape6/") != -1){  code = DEF_BROWSER_TYPE_NN6; }
			else {
				if (userAgent.indexOf("Netscape/7") != -1){  code = DEF_BROWSER_TYPE_NN7; }
				else {
					if (userAgent.indexOf("Netscape/8") != -1){  code = DEF_BROWSER_TYPE_NN8; }
					else {
						if (userAgent.indexOf("Safari") != -1){  code = DEF_BROWSER_TYPE_SAFARI; }
						else {
							if (userAgent.indexOf("Firefox") != -1){  code = DEF_BROWSER_TYPE_FIREFOX; }
							else {  code = DEF_BROWSER_TYPE_MOZILLA1; }
						}
					}
				}
			}
		}
		}
		if(appName.charAt(0)=="M" && userAgent.indexOf("Opera") == -1){
		if(appVersion.charAt(0)==2){ code = DEF_BROWSER_TYPE_IE2; }
		if(appVersion.charAt(0)==3){ code = DEF_BROWSER_TYPE_IE3; }
		if(appVersion.charAt(0)==4){
			if (appVersion.indexOf("MSIE 5") != -1){ code = DEF_BROWSER_TYPE_IE5; }
			else {
				if (appVersion.indexOf("MSIE 6") != -1){ code = DEF_BROWSER_TYPE_IE6; }
				else { 
					if (appVersion.indexOf("MSIE 7") != -1){ code = DEF_BROWSER_TYPE_IE7; }
					else { code = DEF_BROWSER_TYPE_IE4; }
				}
			}
		}
	}
	if (userAgent.indexOf("Opera") != -1){ code = DEF_BROWSER_TYPE_OPERA; }

	return( code ) ;
}


/*
 *		DOMオブジェクト参照タイプを取得
 */
function getTypeDOMRefer() {
	var		type ;
	if (document.all) {
		/*	IE6/IE7		*/
		type = DEF_REF_DOM_TYPE_ALL ;
	}
	else if (document.getElementById) {
		/*	Firefox3	*/
		/*	Opera		*/
		/*	Safari/Google Chrome	*/
		type = DEF_REF_DOM_TYPE_ELEMENT ;
	}
	else if (document.layers) {
		/*	unconfirmed	*/
		type = DEF_REF_DOM_TYPE_LAYERS ;
	} 
	else {
		/*	unknown...	*/
		alert( "DOM reference type is not decided." ) ;
		type = DEF_REF_DOM_TYPE_UNKNOWN ;
	} 
	return( type ) ;
}




/*--------------------------------------------------------------
 *	強調ボックス表示
 *
 *	┌───────────────────┐
 *	│	タイトル							│
 *	├───────────────────┤
 *	│										│
 *	│	内容								│
 *	│										│
 *	└───────────────────┘
 *
 *--------------------------------------------------------------*/
function putEmphasizedBox( title, comment, addInfo ) {
	document.write( getEmphasizedBoxHTML( title, comment, addInfo ) ) ;
}
function getEmphasizedBoxHTML( title, comment, addInfo ) {
	var		word="" ;
	
	word += "<div class='center'>" ;
	word += "<table class='especial-message' cellspacing='0' cellpadding='0' border='0'>" ;
	word += "<tr><td class='title'>" + title + "</td></tr>" ;
	word += "<tr><td>" ;
	word += comment ;

	if( typeof(addInfo)!="undefined" ) {
		word += "<br />" ;
		word += "<div class='optional'>" ;
		word += addInfo ;
		word += "</div>" ;
	}

	word += "</td></tr>" ;
	word += "</table>" ;
	word += "</div>" ;

	return( word ) ;
}
function putWarningBox( title, comment ) {
	var		word="" ;
	
	word += "<div class='center'>" ;
	word += "<table class='warning-message' cellspacing='0' cellpadding='0' border='0'>" ;
	word += "<tr><td class='title'>" + title + "</td></tr>" ;
	word += "<tr><td>" ;
	word += comment ;
	word += "</td></tr>" ;
	word += "</table>" ;
	word += "</div>" ;

	document.write( word ) ;
}




/*
 *	画像情報から画像表示用HTMLを生成する
 *	
 *	@param	imgFile		画像ファイル名
 *			imgWidth	元画像サイズ（幅）
 *			imgHeight	元画像サイズ（高さ）
 *			alt			alt属性
 *			limitWidth	制限する画像サイズ（幅）
 *			classCSS	画像表示するためのCSSクラス名
 */
function getDispImageHTML( imgFile, imgWidth, imgHeight, alt, limitWidth, classCSS )
{
	var		width, height ;
	var		msg="" ;
	var		txtClassCSS="" ;
	var		imgInst, imgWidth, imgHeight ;

	if( imgFile=="" ) {
		/*	画像がなければ即return	*/
		return( msg ) ;
	}

//	imgInst = new Image() ;
//	imgInst.src = imgFile ;
//	imgWidth = imgInst.width ;
//	imgHeight = imgInst.height ;
//	alert( sprintf( "%s  w=%d  h=%d", imgFile, imgWidth, imgHeight ) ) ;

	/*
	 *	表示幅指定が与えられない場合は元画像サイズのまま
	 */
	if( typeof(limitWidth) == "undefined" ) {
		limitWidth = imgWidth ;
	}

	/*
	 *	画像表示クラスが指定が与えられない場合の処理
	 */
	if( typeof(classCSS) == "undefined" ) {
		classCSS = "" ;
	}

	if( imgWidth>limitWidth ) {
		width = limitWidth ;
		height = parseInt( limitWidth*imgHeight/imgWidth, 10 ) ;
    }
    else {
		width = imgWidth ;
		height = imgHeight ;
    }

	msg = sprintf( "<img src='%s' class='%s' width='%d' height='%d' alt='%s' />"
		, imgFile
		, classCSS
		, width
		, height
		, alt
	) ;

	return( msg ) ;
}

/*
 *	マウス操作で切り替わる画像表示用HTMLを生成する
 *	
 *	@param	name		画像を識別するためのname属性
 *			imgDir		画像が格納されているディレクトリ
 *						・全ての画像が同じディレクトリにあることを前提としてる
 *						　そうでない場合は、以下の画像ファイル名をフルパスまたは相対パスで指定する
 *			imgDisable	通常状態の画像ファイル名
 *			imgEnable	マウスオーバー状態の画像ファイル名
 *			imgWidth	元画像サイズ（幅）
 *			imgHeight	元画像サイズ（高さ）
 *			alt			alt属性
 */
function getMouseOpeVariableImageHTML( name, imgDir, imgDisable, imgEnable, imgWidth, imgHeight, alt )
{
	var		msg="" ;

	/*	HTML生成前に画像をロード	*/
	newImage( sprintf( "%s%s", imgDir, imgEnable ) );
	newImage( sprintf( "%s%s", imgDir, imgDisable ) );

	msg += sprintf( "<img name='%s' src='%s%s' width='%s' height='%s' alt='%s' ", name, imgDir, imgDisable, imgWidth, imgHeight, alt ) ;
	msg += sprintf( "onmouseover=\"document.%s.src='%s%s';return true;\"", name, imgDir, imgEnable ) ;
	msg += sprintf( "onmouseout=\"document.%s.src='%s%s';return true;\"", name, imgDir, imgDisable ) ;
	msg += " >" ;
	return( msg ) ;
}

/*
 *	画像インスタンスを生成する
 *	ImageReady Preload Script
 */
function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}




/*
 *		半角→全角変換
 */
function toJis( orgStr ) {
	var		result="" ;
	var		ii ;
	var		tmp ;
	var		ch ;

	table = new Array() ;
	table["0"] = "０" ;
	table["1"] = "１" ;
	table["2"] = "２" ;
	table["3"] = "３" ;
	table["4"] = "４" ;
	table["5"] = "５" ;
	table["6"] = "６" ;
	table["7"] = "７" ;
	table["8"] = "８" ;
	table["9"] = "９" ;
	table["-"] = "－" ;
	table["+"] = "＋" ;
	table["*"] = "＊" ;
	table["/"] = "／" ;
	table[","] = "，" ;
	table["."] = "．" ;

	for( ii=0; ii<orgStr.length; ii++ ) {
		ch = orgStr.charAt(ii) ;
		tmp = table[ch]
		result += ( typeof(tmp)=="undefined" ) ? ch : tmp ;
	}
	return( result ) ;
}


/*--------------------------------------------------------------
 *	全角→半角変換
 *--------------------------------------------------------------*/
function toAsc( orgStr ) {
	var		result="" ;
	var		ii ;

	table = new Array() ;
	table["０"] = "0" ;
	table["１"] = "1" ;
	table["２"] = "2" ;
	table["３"] = "3" ;
	table["４"] = "4" ;
	table["５"] = "5" ;
	table["６"] = "6" ;
	table["７"] = "7" ;
	table["８"] = "8" ;
	table["９"] = "9" ;
	table["－"] = "-" ;
	table["＋"] = "+" ;
	table["＊"] = "*" ;
	table["／"] = "/" ;
	table["，"] = "," ;
	table["．"] = "." ;

	for( ii=0; ii<orgStr.length; ii++ ) {
		tmp = table[orgStr.charAt(ii)]
		result += ( typeof(tmp)=="undefined" ) ? orgStr.charAt(ii) : tmp ;
	}
	return( result ) ;
}




/*--------------------------------------------------------------
 *	全角○数字取得（①②③…）
 *--------------------------------------------------------------*/
function getCircledNumber( num ) {
	table = new Array() ;
	table[0] = "〇" ;
	table[1] = "①" ;
	table[2] = "②" ;
	table[3] = "③" ;
	table[4] = "④" ;
	table[5] = "⑤" ;
	table[6] = "⑥" ;
	table[7] = "⑦" ;
	table[8] = "⑧" ;
	table[9] = "⑨" ;

	return( table[ num ] ) ;
}
