// moock fpi [f.lash p.layer i.nspector]
// version: 1.3.5
// written by colin moock
// code maintained at: http://www.moock.org/webdesign/flash/detection/moockfpi/
// terms of use posted at: http://www.moock.org/terms/



// #############################################
// 以下はユーザーがカスタマイズできるグローバル変数です。
// 初期値を変更して動作をカスタマイズします。

var requiredVersion = 5;   // サイトを見るのに必要なバージョン番号 (最大 6, 
                           // 最小 2)
var useRedirect = true;    // 検出の結果によって別ページに転送するかどうか
                           // を決定するフラグ。trueの場合は別ページに転送,
			// つまり転送オプションがオン。
			// falseの場合はこのページに直接埋め込みFlashまたは
			// 代替画像を表示する。
                        // useRedirectがtrueの場合のみ以下の3つの変数を指定

var flashPage = "tech_f.html"      // Flashムービーページ
var noFlashPage = "tech.html"  // 検出不能の場合,あるいはプラグインがない
						   // 場合に表示するページ
var upgradePage = "tech.html"  // 古いバージョンのプラグインが検出されたと
						   // きに表示するページ
// #############################################



// *************
// この後,BODYタグが終了するまでは,内部的な処理を行っています。
// この部分は編集しないでください!詳細はBODYタグ終了後のコメントを参照。
// *************

// System globals
var flash2Installed = false;    // Flash 2が入っている場合にtrue
var flash3Installed = false;    // Flash 3が入っている場合にtrue
var flash4Installed = false;    // Flash 4が入っている場合にtrue
var flash5Installed = false;    // Flash 5が入っている場合にtrue
var flash6Installed = false;    // Flash 6が入っている場合にtrue
var maxVersion = 6;             // 検知できる最新のバージョン
var actualVersion = 0;          // 実際に検知されたバージョン
var hasRightVersion = false;    // Flashムービーを安全に表示できる場合にtrue
var jsVersion = 1.0;            // サポートされているJavaScriptバージョン


// ブラウザのチェック(IE/Winかどうか)
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
// IEの場合true
var isWin = (navigator.appVersion.indexOf("Windows") != -1) ? true : false; // Windowsの場合true

// 以下はjs1.1コードブロック。
jsVersion = 1.1;

// Windows IE用にvbscript検知コードを書き出し。
// Windows IEは通常のjavascript.plugin配列による検知が不可能。
if(isIE && isWin){
  document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
  document.write('on error resume next \n');
  document.write('flash2Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n');
  document.write('flash3Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n');
  document.write('flash4Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n');
  document.write('flash5Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');  
  document.write('flash6Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) \n');  
  document.write('</SCR' + 'IPT\> \n'); // タグを分割することで,SCRIPTタグが
						   // ここで終了してしまうと認識されるのを防ぐ。
}


// ここでは通常のJavascriptによる,navigator.plugins配列を利用したプラグイン
// 検知を行う。検出コードは,ページがロードされる前に,関数として書き出される
// ようにする。

function detectFlash() {  
  // navigator.pluginsが利用可能な場合...
  if (navigator.plugins) {
    // Flash 2かflash 3以上かを判断。
    if (navigator.plugins["Shockwave Flash 2.0"]
        || navigator.plugins["Shockwave Flash"]) {

      // なんらかのバージョンのFlashプラグインが検出されたので,次に
	  // バージョンを特定する。
      
      // プラグインバージョン2.0を参照するための内部ラベル付け。
      var isVersion2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      var flashDescription = navigator.plugins["Shockwave Flash" + isVersion2].description;

      // デバッグ:次のラインをアンコメントすると,内部ラベルを見ることが
	  // きます。
      // alert("Flashプラグインバージョン: " + flashDescription);
      
      // 内部ラベルはこのような形式で表示されます→ Shockwave Flash 4.0 r5
      // ピリオド左側の数字を見て,メジャーバージョンを得ることができます。
      // ここではマイナーバージョン検知を行いません。 
      // それを行うには,ムービー内で$versionまたはgetVersion()を使います。
      var flashVersion = parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1));
     
      // バージョンが判定できたので,こんどは適切なバージョンフラグを立てます。
      // 最新バージョンのケースでは「>= 」を使うことで,さらに新しいバージョン
      // が出てきたときにサイトから締め出されないようにします。
      flash2Installed = flashVersion == 2;    
      flash3Installed = flashVersion == 3;
     flash4Installed = flashVersion == 4;
      flash5Installed = flashVersion == 5;
      flash6Installed = flashVersion >= 6;
    }
  }
  
  // 全バージョンのテストをループし,actualVersionを,検出された最新の
  // バージョンのものにセットする。
  for (var i = 2; i <= maxVersion; i++) {  
    if (eval("flash" + i + "Installed") == true) actualVersion = i;
  }
  
  // WebTVの場合,サポートされているバージョンは2(2000年夏より前)または
  // 3(2000年夏以香`)のどちらか。このスクリプトではWebTVのバージョンについ 
  // ては関知しない。やろうと思ってできないことはないが...
  if(navigator.userAgent.indexOf("WebTV") != -1) actualVersion = 3;  
  
  // デバッグ:次のラインをアンコメントすると,実際に検出されたFlashバージョン
  // を見ることができます。
  // alert("検出されたFlashプラグインバージョン: " + actualVersion);

  // プラグイン検知をサポートするすべてのブラウザをカバーしたので,今度はその
  // 結果に応じた適切な処理を行う。

  // ユーザーが充分に新しいバージョンをインストールしていたら...
  if (actualVersion >= requiredVersion) {
    // 転送オプションをオンにしている場合は,適切なページに転送する。
    if (useRedirect) {
      // location.replaceを行うためにはJavascript 1.1以上が必要。
      if(jsVersion > 1.0) {
        // replace()が使えるため,「戻る」ボタン機能を損なわずに転送可能。
        window.location.replace(flashPage);  
      } else {
        // Javascriptバージョンが古いので,.locationを使って転送をする。
        window.location = flashPage;
      }
    }
    
    // ここに処理が来た場合,充分に新しいバージョンがインストールされているが
	// 転送オプションがオフということ。この後の処理でobject/embedタグを生成し,
	// 書き出す。
    hasRightVersion = true;                
  } else {  
    // ユーザーが充分に新しいバージョンをインストールしていなかった。
    // 転送オプションがオンの場合,適切な代替ページ(ダウンロードページなど)
	// を表示。
    if (useRedirect) {
      // 上記処理と同様,js1.1以上の場合のみ,.replace() を使って転送を行う。
      if(jsVersion > 1.0) {
        window.location.replace((actualVersion >= 2) ? upgradePage : noFlashPage);
      } else {
        window.location = (actualVersion >= 2) ? upgradePage : noFlashPage;
      }
    }
  }
}


detectFlash();  // 検出スクリプトに,安全にロードされたことを伝える。
