/*****************************************************************************************************
**
** TOOL - FLASH CHECK V2
**
** Dateiname:			flcheck_v2.js
** Letzte Änderung:		19.02.2009 (Ilja Leipold)
**
*****************************************************************************************************
**
** INFOMATION
**
** Vielen Dank an Colin Moock (moock.org). Von ihm stammt das eigentliche Grundgerüst dieses Scriptes.
** erste Anpassung, Abänderung bzw. Modifizierung wurden von Heiko Pfefferkorn durchgeführt.
** Heiko Pfefferkorn (o2cell.com) (work: i-fabrik.de)
**
****************************************************************************************************/

/*****************************************************************************************************
** 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 :-)
****************************************************************************************************/

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
var installedVersion=-1;


/* Detect Flash
---------------*/
function detectFlash(flV) {
  if(isIE && isWin){
  	document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
  	document.write('on error resume next \n');
    for (var i = 0; i <= flV; i++) {
      document.write('if IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.'+i+'")) then installedVersion = '+i+'  \n');
    }
    document.write('</SCR' + 'IPT\> \n');
  }else{
    if (navigator.plugins) {
      var parseRevisionStrToInt = function(str){
    		return parseInt(str.replace(/[a-zA-Z]/g, ""), 10) || -1;
    	};
    	var parseStandardVersion = function(str){
    		var descParts = str.split(/ +/);
    		var majorMinor = descParts[2].split(/\./);
    		var revisionStr = descParts[3];
    		return {
    			"raw":str,
    			"major":parseInt(majorMinor[0], 10),
    			"minor":parseInt(majorMinor[1], 10), 
    			"revisionStr":revisionStr,
    			"revision":parseRevisionStrToInt(revisionStr)
    		};
    	};

      for (var i = 0; i <= navigator.plugins.length; i++) {
        //for (var Eigenschaft in navigator.plugins[i])
        //  if(Eigenschaft == 'description' && navigator.plugins[i][Eigenschaft].indexOf("Flash")!=-1)
        //    console.log(Eigenschaft + ": " + navigator.plugins[i][Eigenschaft] + "\n");
        if(navigator.plugins[i] && navigator.plugins[i]['description'] && navigator.plugins[i]['description'].indexOf("Flash")!=-1){
          var version = navigator.plugins[i]['description'];
          var versionObj = parseStandardVersion(version);
          //console.log(version + "\n");
          //console.log(versionObj);
          installedVersion = versionObj.major;
        }
    	}
    }
  }
  return installedVersion;
}
  


/* 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 Ausdruck = /#version=([^,]+),/;
  Ausdruck.exec(strFlash);
  var objectTagVersion = RegExp.$1;
  if (objectTagVersion != flVersion) {
    flVersion = objectTagVersion;
  }

	// detect flash version
	var detectedFlash = detectFlash(flVersion);

  //console.log('Benötigte Flash Version:'+flVersion+' installierte:'+detectedFlash);
	//alert('Benötigte Flash Version:'+flVersion+' installierte:'+detectedFlash);
	
  if(detectedFlash>=flVersion) {
		// schreibe flash-string
		document.write(strFlash);
	} else {
		// schreibe kein-Flash-String
		document.write(strNoFlash);
	}
}
