/*
	--------------------------------
	Last Updated: 2006.05.12
	--------------------------------
	- Table of Contents -

	1. CONFIGURATION

	2. FUNCTION CALLS
		- setIsActiveFlash ( )
		- // trapDisabledFlash ( flash_requireVer, redirectLoc )

	3. FUNCTIONS
		- trapDisabledFlash ( )
		- writeFlashSrc ( )
		- includeFlashSrc ( )
		- isEnabledFlash ( )
		- isEnabledFlashVer ( )
		- getFlashVer ( )
		- getFlashVerByVbs ( )
		- getFlashVerByJs ( )
		- setIsActiveFlash ( )
	--------------------------------
*/



/* --------------------------------
	1. CONFIGURATION
-------------------------------- */

// 要求バージョン
// var flash_requireVer = 5;

// リダイレクト先のアドレス
// var redirectLoc = 'index-nonflash.html';



// 現行の最終バージョン
var flash_latestVer = 8;



/* --------------------------------
	2. FUNCTION CALLS
-------------------------------- */

setIsActiveFlash ( );
// trapDisabledFlash ( flash_requireVer, redirectLoc );



/* --------------------------------
	3. FUNCTIONS
-------------------------------- */

/* Flashの動作可否を判定のうえ、不可の際はリダイレクト先へ移動 ---------------- */
function trapDisabledFlash ( requireVer, redirectLoc ) {
	if ( !isEnabledFlash ( requireVer ) ) { location.href = redirectLoc; }
}

/* Flashの動作可否を判定のうえ、結果に基づいた内容を出力 ---------------- */
function writeFlashSrc ( obj ) {
	var state = isEnabledFlash ( obj.version );

	var src = ( state ) ? obj.flash.join ( '\n' ) :
		( obj.alt.length == 1 && obj.alt[ 0 ] == null ) ? obj.flash.join ( '\n' ) :
		obj.alt.join ( '\n' );
	
	document.open ( );
	document.write ( src );
	document.close ( );

	return state;
}

/* HTMLにFlash要素を組み込み ---------------- */
function includeFlashSrc ( obj ) {
	var notice = '<p style="font-size: 16px;"><span style="font-size: 0.75em;">動作可能な Flash Player が検出されませんでした。</span></p>\n';

	var state = isEnabledFlash ( obj.version );

	var src = ( state ) ? obj.flash.join ( '\n' ) : notice;

	document.open ( );
	document.write ( src );
	document.close ( );

	return state;
}

/* Flashの動作可否を判定 ---------------- */
function isEnabledFlash ( requireVer ) {
	var state = ( navigator.mimeTypes[ 'application/x-shockwave-flash' ] ) ?
		navigator.mimeTypes[ 'application/x-shockwave-flash' ].enabledPlugin : true;

	if ( state ) { state = ( getFlashVer ( ) >= requireVer ); }

	return state;
}

/* 要求されたバージョンのFlashの動作可否を判定 ---------------- */
function isEnabledFlashVer ( requireVer ) {
	return ( getFlashVer ( ) >= requireVer );	
}

/* Flashのバージョンを取得する処理の親関数 ---------------- */
function getFlashVer ( ) {
	var av = navigator.appVersion;
	var ua = navigator.userAgent;
	return ( av.match ( 'Win' ) && !ua.match ( 'Opera' ) && ua.match ( 'MSIE' ) ) ? getFlashVerByVbs ( flash_latestVer ) : getFlashVerByJs ( );
}

/* VBScriptを用いたFlashのバージョンの取得 ---------------- */
function getFlashVerByVbs ( latestVer ) {
	var ver = false;
	for ( var i = latestVer; i > 0; i-- ) {
		if ( isActiveFlash ( i ) ) { ver = i; break; }
	}

	return ver;
}

/* JavaScriptを用いたFlashのバージョンの取得 ---------------- */
function getFlashVerByJs ( ) {
	var ver = false;
	var plugs = navigator.plugins;
	for ( var i = 0; i < plugs.length; i++ ) {
		if ( plugs[ i ].description.match ( 'Shockwave Flash' ) ) {
			var temp = plugs[ i ].description.split ( ' ' );
			ver = ( !ver ) ? temp[ 2 ] : ( temp[ 2 ] > ver ) ? temp[ 2 ] : ver;
		}
	}

	return ver;
}

/* Flashのバージョン取得処理用VBScriptを出力 ---------------- */
function setIsActiveFlash ( ) {
	var av = navigator.appVersion;
	var ua = navigator.userAgent;
	if ( av.match ( 'Win' ) && !ua.match ( 'Opera' ) && ua.match ( 'MSIE' ) ) {
		var vbs_src = [
			'<scr' + 'ipt type="text/vbscript">',
			'Function isActiveFlash ( ver )',
			'	on error resume next',
			'	isActiveFlash = ( Isobject ( Createobject ( "ShockwaveFlash.ShockwaveFlash." + CStr ( ver ) ) ) )',
			'End Function',
			'</scr' + 'ipt>'
		];

		document.open ( );
		document.writeln ( vbs_src.join ( '\n' ) );
		document.close ( );
	}
}
