var usrAgent = navigator.userAgent.toUpperCase( ) ;

var WIN	= ( usrAgent.indexOf("WIN") != -1 ) ? true : false ;
var MAC	= ( usrAgent.indexOf("MAC") != -1 ) ? true : false ;

var OPERA = ( usrAgent.indexOf("OPERA") != -1 ) ? true : false ;
var NN4	= ( document.layers ? true : false ) ;
var NN6	= ( document.getElementById && !document.all ? true : false ) ;
var IE4	= ( !OPERA && document.all && !document.getElementById ? true : false ) ;
var IE5	= ( !OPERA && document.all && document.getElementById ? true : false ) ;




// ブラウザ情報の取得
function getOsName( )
{
	var userOs      = "" ;
	var regexResult = "" ;
	var moreInfo    = true ;
	var usrAgent    = navigator.userAgent.toUpperCase( ) ;

	if ( usrAgent.indexOf("WIN") != -1 ) userOs = "Windows" ;
	if ( usrAgent.indexOf("MAC") != -1 ) userOs = "MacOS" ;
	if ( usrAgent.indexOf("X11") != -1 ) userOs = "UNIX" ;

	return userOs ;
}

function getBrowserName( )
{
	var userBrowser = "" ;
	var appName     = navigator.appName.toUpperCase( ) ;
	var usrAgent    = navigator.userAgent.toUpperCase( ) ;

	if ( appName.indexOf("NETSCAPE")  != -1 ) userBrowser = "Netscape" ;
	if ( appName.indexOf("MICROSOFT") != -1 ) userBrowser = "Explorer" ;
	if ( usrAgent.indexOf("OPERA") != -1 ) userBrowser = "Opera" ;

	return userBrowser ;
}

function getBrowserVersion( )
{
	var version    = "" ;
	var start      = 0  ;
	var end        = 0  ;
	var usrBrowser = getBrowserName( ) ;
	var usrAgent   = navigator.userAgent.toUpperCase( ) ;
	var appVersion = navigator.appVersion ;

	if ( usrBrowser == "Netscape" )
	{
		start   = appVersion.indexOf(" ",0) ;
		version = appVersion.substring(0,start) ;
	}
	if ( usrBrowser == "Explorer" )
	{
		start   = appVersion.indexOf("MSIE ",0) + 5 ;
		end     = appVersion.indexOf(";",start) ;
		version = appVersion.substring(start,end) ;
	}
	if ( usrBrowser == "Opera" )
	{
		start   = usrAgent.indexOf("OPERA ",0) + 6 ;
		end     = usrAgent.indexOf(" ",start) ;
		version = usrAgent.substring(start,end) ;
	}

	return version ;
}




// ブラウザのバージョン判定
function versionCheck( )
{
	var flag = ( ( OPERA && getBrowserVersion( ).substr( 0, 1 ) >= 6 ) || ( NN4 && getBrowserVersion( ).substr( 0, 3 ).toString( ) != '4.0' ) || IE5 || NN6 ) ? true : false ;

	return flag ;
}

// FLASH のバージョン判定
function getFlashVersion( )
{
	var flashVersion ;
	var usrOS = getOsName( ).toLowerCase( ) ;

	if ( WIN && document.all && !OPERA )
	{
		flashVersion = getVBFlashVersion( ) ;
	}
	else
	{
		flashVersion = getJSFlashVersion( ) ;
	}

	return flashVersion ;
}

// WIN + MSIE 以外のブラウザは JS で判定する
function getJSFlashVersion( )
{
	var PLUGIN = navigator.plugins ;
	var PLUGIN_LENGTH = PLUGIN.length ;
	var myPlugin ;
	var myName ;
	var myDesc ;
	var flashVersion ;
	var versionDemilita = " r" ;
	var demilitaPos ;
	var majorVersion ;
	var minorVersion ;

	for ( var i=0; i < PLUGIN_LENGTH; i++ )
	{
		myPlugin = PLUGIN[ i ] ;
		myName = myPlugin.name ;
		myDesc = myPlugin.description ;

		if ( myName.indexOf( "Shockwave" ) != -1 && myName.indexOf( "Flash" ) != -1 )
		{
			flashVersion = myDesc.substring( myDesc.indexOf("Flash ") + 6 ) ;
			demilitaPos = flashVersion.indexOf( versionDemilita ) ;

			if ( demilitaPos != -1 )
			{
				majorVersion = flashVersion.substring( 0, demilitaPos ) ;
				minorVersion = parseInt( flashVersion.substring( demilitaPos + 2 ) ) ;

				if ( minorVersion < 10 )
				{
					minorVersion = "0" + minorVersion ;
				}

				return parseFloat( majorVersion + minorVersion ) ;
			}
			else
			{
				return parseFloat( flashVersion ) ;
			}
		}
	}

	return Number( 0 ) ;
}

// WIN + MSIE の場合、VBScript にて判定する
function getVBFlashVersion( )
{
	var COUNT_MAX = 7 ; // 最初に調べるバージョン
	var flashVersion ;
	var majorVersion ;
	var minorVersion ;

	for ( var i=COUNT_MAX; i>0; i-- )
	{
		flashVersion = getFlashControlVersion( i ) ;

		if ( flashVersion != 0 )
		{
			majorVersion = flashVersion >> 16 ;
			minorVersion = flashVersion & 0x0000ffff ;

			return parseFloat( majorVersion + "." + minorVersion ) ;
		}
	}

	return Number( 0 ) ;
}



/* ------------------------------------------------------------------------------------
   FlashPlayerのプラグインを調べ、問題無いときはSWFを書き出し、NGの時はジャンプする
------------------------------------------------------------------------------------ */
function FlashChecker( requestVersion, JumpURL )
{
	this.requestVersion = requestVersion ;

	if ( JumpURL )
	{
		this.pageJump( JumpURL ) ;
	}
}

// ジャンプ先が指定してあった場合、静止画像ではなく、ページを切り替える
FlashChecker.prototype.pageJump = function( JumpURL )
{
	var targetBrowser = versionCheck( ) ;
	var flashVersion  = getFlashVersion( ) ;

	if ( !targetBrowser || flashVersion < this.requestVersion )
	{
		location.replace( JumpURL ) ;
	}
}

