  
/*****************************************************************************************************
**
** TOOL - FLASH CHECK V2
**
** Dateiname:   flcheck_v2.js
** Letzte Änderung:  10.10.2003
** Programmierer:  Heiko Pfefferkorn (o2cell.com) (work: i-fabrik.de)
**
*****************************************************************************************************
**
** INFOMATION
**
** Vielen Dank an Colin Moock (moock.org). Von ihm stammt das eigentliche Grundgerüst dieses Scriptes.
** Anpassung, Abänderung bzw. Modifizierung wurden von Heiko Pfefferkorn durchgeführt.
**
****************************************************************************************************/
/*****************************************************************************************************
**
** ACHTUNG
**
** Ich möchte darauf hinweisen das die dem Script beiliegende SWF-Datei nur für Demonstrationszwecke,
** nicht zum Einbau in externe bzw. fremde Seiten oder zum Schmücken jener, gedacht ist.
**
****************************************************************************************************/
/*****************************************************************************************************
** ANWENDUNG:
**
** Benutze folgenden Codeblock (von "<script language="JavaScript">" bis "</noscript>")
** um Flash oder um einen selbstdefinierbaren "No-Flash-Standard-String" oder einen
** selbstdefinierbaren "No-Script-String" anzuzeigen!
*****************************************************************************************************
** BLOCK:
**
** <script language="JavaScript">
** var flashVersion = 5;
** var stringFlash = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" '
**        + 'width="200" height="170" id="yourID" align=""> '
**        + '<param name="movie" value="your.swf"> '
**     + '<param name="flashvars" value="varName=varValue"> '
**        + '<param name="loop" value="false"> '
**        + '<param name="menu" value="false"> '
**        + '<param name="quality" value="best"> '
**        + '<param name="bgcolor" value="#ffffff"> '
**        + '<embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" '
**     + 'src="your.swf" '
**        + 'width="200" height="170" '
**     + 'flashvars="varName=varValue" '
**        + 'loop="false" '
**     + 'menu="false" '
**     + 'quality="best" '
**     + 'bgcolor="#ffffff" '
**     + 'name="yourID" align=""> '
**     + '</embed></object>';
** 
** var stringNoFlash = '<font face="Verdana" size="1" color="#cccccc">'
**     + '<b>You don not have the actuell Macromedia Flash Plugin</b>'
**     + '</font>';
** 
** writeFlash(stringFlash, stringNoFlash, flashVersion);
** </script>
** <noscript>Javascript not supported</noscript>
**
*****************************************************************************************************
** flashVersion  = die Flashversion die das aktuelle SWF-File hat bzw. die Version ab der sie
**       das Flash anzeigen wollen. Geben Sie zum Beispiel als Version max. 5 an und
**       haben Ihr SWF aber mit Version 6 veröffentlicht dann steht das meisten noch
**       mit im "object" - Tag.
**       Sind also die "2" Flashversionen unterschiedlich dann wird immer autom. die
**       genommen die im "object" - Tag steht
** stringFlash  = der string der ausgegeben wird wenn die Flashversion bei dem User
**       korrekt ist (flashVersion)
** stringNoFlash = der string der ausgegeben wird wenn die Flashversion bei dem User nicht mit
**       "flashVersion" übereinstimmt bzw. kein Flash erkannt wurde
** noScript-Tag  = das müsste ja wohl jeder wissen :-)
****************************************************************************************************/
/* System
---------*/
var flash2Installed = false; // wahr wenn flash 2 installiert ist
var flash3Installed = false; // wahr wenn flash 3 installiert ist
var flash4Installed = false; // wahr wenn flash 4 installiert ist
var flash5Installed = false; // wahr wenn flash 5 installiert ist
var flash6Installed = false; // wahr wenn flash 6 installiert ist
var flash7Installed = false; // wahr wenn flash 7 installiert ist
var flash8Installed = false; // wahr wenn flash 8 installiert ist
var flash9Installed = false; // wahr wenn flash 9 installiert ist
var flash10Installed = false; // wahr wenn flash 10 installiert ist
var maxVersion   = 10;  // die Version die momentan maximal gecheckt wird
var actualVersion  = 0;  // die version die der User hat
var hasRightVersion = false; // wahr wenn der User die richtige Version hat
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;     // TRUE wenn IE
var isWin = (navigator.appVersion.indexOf("Windows") != -1) ? true : false; // TRUE wenn auf Windows
/* VB-Script Detection beim MsIe auf Windows, da MsIe bei Windows
-- regular JavaScript Plugins nicht unterstützt
-------------------------------------------------------------------*/
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('flash7Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.7"))) \n');  
 document.write('flash8Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.8"))) \n');  
 document.write('flash9Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.9"))) \n');  
 document.write('flash10Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.10"))) \n');  
 document.write('</SCR' + 'IPT\> \n');
}
/* Detect Flash
---------------*/
function detectFlash(flV) {  
 // existiert navigator.plugins
 if (navigator.plugins) {
  // check für flash 2 oder flash 3+
  if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
   var isVersion2    = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
   var flashDescription  = navigator.plugins["Shockwave Flash" + isVersion2].description;
   //alert("Flash plugin description: " + flashDescription);
   var flashVersion   = parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1));
   //Flash 10 or more!?
   if(parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 2))==1){
     flashVersion = parseInt(flashDescription.substring(flashDescription.indexOf(".") - 2, flashDescription.indexOf(".")));
   }
   flash2Installed   = flashVersion == 2;    
   flash3Installed   = flashVersion == 3;
   flash4Installed   = flashVersion == 4;
   flash5Installed   = flashVersion == 5;
   flash6Installed   = flashVersion == 6;
   flash7Installed   = flashVersion == 7;
   flash8Installed   = flashVersion == 8;
   flash9Installed   = flashVersion == 9;
   flash10Installed   = flashVersion >= 10;
  }
 }
 for (var i = 2; i <= maxVersion; i++) {  
  if (eval("flash" + i + "Installed") == true) actualVersion = i;
 }
 if(navigator.userAgent.indexOf("WebTV") != -1) actualVersion = 3;  
 //alert("version detected: " + actualVersion);
 if (actualVersion >= flV) {
  hasRightVersion = true;                
 } else {  
  hasRightVersion = false;
 }
}
/* Schreibe Flash
-----------------*/
function writeFlash(strFlash, strNoFlash, flVersion) {
 /* steht in "strFlash" im object-Tag eine Version und diese ist ungleich
 ** mit der bereits angegebenen Version in "flVersion" dann wird "flVersion"
 ** auf die Version aus dem object-Tag gesetzt
 --------------------------------------------------------------------------*/
 var posVersion = strFlash.search(/#version=.+/);
 if(posVersion != -1) {
  var objectTagVersion = strFlash.substring(posVersion+9,posVersion+10);
  if (objectTagVersion != flVersion) {
   flVersion = objectTagVersion;
  }
 }
 // alert(flVersion);
 // detect flash version
 detectFlash(flVersion);
 if(hasRightVersion) {
  // schreibe flash-string
  document.write(strFlash);
 } else {
  // schreibe kein-Flash-String
  document.write(strNoFlash);
 }
}
