//  FLASHバージョン検知(ja, Shift-JIS)
//
//  (C)NCG
//  version 1.0.1

// クライアントブラウザタイプを検出します。
var DF_isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var DF_isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var DF_isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

var DF_isUseVBGetSwfVer = DF_isIE && DF_isWin && !DF_isOpera;

// Flash Player プラグインのバージョン情報を検出します。
// [IN] i : (使わない)
// [OUT] (Return) : -1 : 何も検出できなかった。
//                : -1以外 : 検出したプラグインのバージョン
function JSGetSwfVer(i){
  // navigator.pluginsにFlashプラグインがないかどうか調べます。(navigator.pluginsがあるのはNS/Opera version >= 3)
  if (navigator.plugins != null && navigator.plugins.length > 0) {
    if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
      var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
      descArray = flashDescription.split(" ");
      tempArrayMajor = descArray[2].split(".");
      versionMajor = tempArrayMajor[0];
      versionMinor = tempArrayMajor[1];
      if ( descArray[3] != "" ) {
        tempArrayMinor = descArray[3].split("r");
      } else {
        tempArrayMinor = descArray[4].split("r");
      }
      versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
      flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
    } else {
      flashVer = -1;
    }
  }
  // MSN/WebTV 2.6 は Flash 4 をサポートします。
  else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
  // WebTV 2.5 は Flash 3 をサポートします。
  else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
  // 古い WebTV は Flash 2 をサポートします。
  else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
  // 何も検出できなかったケース
  else {
    flashVer = -1;
  }
  return flashVer;
} 

// Flash Playerのバージョンが、指定したバージョンと同じかそれ以上なら、真を返します。
// [IN] reqMajorVer : メジャーバージョン
// [IN] reqMinorVer : マイナーバージョン
// [IN] reqRevision : リビジョン
// [OUT] (Return) : true : 同じかそれ以上
//                : false : そうでない
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) 
{
  reqVer = parseFloat(reqMajorVer + "." + reqRevision);
  // 最新のバージョンを見つけるまで、バージョンを後方ループ(25→1)します。
  for (i=25;i>0;i--) {
    if (DF_isUseVBGetSwfVer) {
      versionStr = VBGetSwfVer(i);
    } else {
      versionStr = JSGetSwfVer(i);
    }

    if (versionStr == -1 ) {
      return false;
    } else if (versionStr != 0) {
      if(DF_isUseVBGetSwfVer) {
        tempArray         = versionStr.split(" ");
        tempString        = tempArray[1];
        versionArray      = tempString .split(",");
      } else {
        versionArray      = versionStr.split(".");
      }
      versionMajor      = versionArray[0];
      versionMinor      = versionArray[1];
      versionRevision   = versionArray[2];
      versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
      versionNum        = parseFloat(versionString);

      /*
        2006/04/28 後藤 リビジョンを考慮していないバグを修正
        (http://www.macromedia.com/jp/devnet/flashplayer/articles/detectionkit.html)
      */
      /*
      // the major.revision >= requested major.revision で the minor version >= requested minor か判別します。
      if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
        return true;
      } else {
        return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false ); 
      }
      */
      if (versionMajor == reqMajorVer) {
        if (versionMinor == reqMinorVer) {
          return (versionRevision   >= reqRevision);
        } else {
          return (versionMinor   > reqMinorVer);
        }
      } else {
        return (versionMajor   > reqMajorVer);
      }
    }
  } 
}

// 標準的なFLASHオブジェクトの埋め込み記述を返します。
// [IN] swfPath : swfパス
// [IN] width : 幅
// [IN] height : 高さ
// [OUT] (Return) : 標準的なFLASHオブジェクトの埋め込み記述
function WriteFlashEmbed(swfPath, width, height) 
{
	var swfPathSplit = swfPath.split("/");
	var swfPathSplitLength = swfPathSplit.length;
	var swfFileName = swfPathSplit[swfPathSplitLength - 1];
	var swfFileNameSplit = swfFileName.split(".");
	var swfCoreName = swfFileNameSplit[0];

  var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
    + 'width="' + width  + '" height="' + height + '"'
    + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
    + '<param name="movie" value="' + swfPath + '" /><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" />'
    + '<embed src="' + swfPath + '" quality="high" bgcolor="#FFFFFF" '
    + 'width="' + width + '" height="' + height + '" name="' + swfCoreName + 'swf" aligh="middle"'
    + 'play="true"'
    + 'loop="false"'
    + 'quality="high"'
    + 'allowScriptAccess="sameDomain"'
    + 'type="application/x-shockwave-flash"'
    + 'pluginspage="http://www.macromedia.com/go/getflashplayer">'
    + '<\/embed>'
    + '<\/object>';
  return oeTags;
}

//(.jsにvbsリソースを埋め込んでいます)

// Flash Player ActiveXコントロールのバージョン情報を検出します。(VBScript)
// [IN] i : 作成してみるShockwaveFlashオブジェクトの指定バージョン
// [OUT] (Return) : 0 : 作成できなかった。
//                : 0以外 : オブジェクトを作成したActiveXコントロールのバージョン
if (DF_isUseVBGetSwfVer) {
  var WM_startTagFix = '</';
  document.writeln('<script language="VBscript">');
  document.writeln('Function VBGetSwfVer(i)');
  document.writeln('  on error resume next');
  document.writeln('  Dim swControl, swVersion');
  document.writeln('  swVersion = 0');
  document.writeln('  set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i))');
  document.writeln('  if (IsObject(swControl)) then');
  document.writeln('    swVersion = swControl.GetVariable("$version")');
  document.writeln('  end if');
  document.writeln('  VBGetSwfVer = swVersion');
  document.writeln('End Function');
  document.writeln(WM_startTagFix+'script>');
}

