/*
	--------------------------------
	Last Updated: 2008.10.20
	--------------------------------
	*/


// 現行の最終バージョン
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; }
}

/**
 *
 * Added by DAARF
 *
 */
function writeFlashTags ( obj, layer_name ) {

	var layer = document.getElementById( layer_name )
	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' );

	layer.innerHTML = src
	return state;
}

function hideFlashLayer ( layer_name )
{
	var layer = document.getElementById( layer_name )
	layer.innerHTML = ''
}

/** End DAARF part **/


/* 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 ( );
	}
}
