function RegisterNamespaces(){for(var i=0;i<arguments.length;i++){var p=arguments[i].split("."),w=window;for(var j=0;j<p.length;j++){if(!w[p[j]])w[p[j]]=new Object();w=w[p[j]];}}}
RegisterNamespaces("Inpl.Flash");

/**
 * Osadza flashe na stronie www, z dowolnymi parametrami
 * lista obslugiwnaych parametrow znajduzje się w funkcji AC_GetArgs 
 * w znaczniku switch
 *
 * @author Lukasz Dospial <lukasz.dospial@firma.interia.pl>
 */
Inpl.Flash = new function()
{
    /**
     * Referencja do tego obiektu
     * @var object
     */
    var objFlash = this;
    /**
     * Sciezka skad ma sobie sciagnac zaslepke fashowa na czas sciagania nowej wersji jesli player obsluguje (60r65)
     */
    var productInstallPath = "http://x.dev.interia.pl/inpl/flash/";
    //--------------------Funkcja pochodza od Adobe i sa zmodyfikowane, za nastepnymi kreskami modyfikacje nasze
	// Flash Player Version Detection - Rev 1.6
	// Detect Client Browser type
	// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
    /**
     * Czy IE
     * @var bool
     */
	var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
	/**
     * Czy Windows
     * @var bool
     */
	var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
	/**
     * Czy Opera
     * @var bool
     */
	var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
	/**
	 * Funckja sprawdza wersje na podstawie zapisow w rejestrze Windows, tylko dla IE
	 * @return String z wersja ActiveX Control
	 */
	function ControlVersion()
	{
	 	var version;
	 	var axo;
	 	var e;
	 	// NOTE : new ActiveXObject(str) wyrzuca wyjatek jesli str nie jest w rejestrze registry
	 	try {
	 		// version will be set for 7.X or greater players
	 		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
	 		version = axo.GetVariable("$version");
	 	} catch (e) {
	 	}
	 	if (!version)
	 	{
	 		try {
	 			// version will be set for 6.X players only
	 			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
	 			// installed player is some revision of 6.0
	 			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
	 			// so we have to be careful. 
	 			// default to the first public version
	 			version = "WIN 6,0,21,0";
	 			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
	 			axo.AllowScriptAccess = "always";
	 			// safe to call for 6.0r47 or greater
	 			version = axo.GetVariable("$version");
	 		} catch (e) {
	 		}
	 	}
	 	if (!version)
	 	{
	 		try {
	 			// version will be set for 4.X or 5.X player
	 			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
	 			version = axo.GetVariable("$version");
	 		} catch (e) {
	 		}
	 	}
	 	if (!version)
	 	{
	 		try {
	 			// version will be set for 3.X player
	 			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
	 			version = "WIN 3,0,18,0";
	 		} catch (e) {
	 		}
	 	}
	 	if (!version)
	 	{
	 		try {
	 			// version will be set for 2.X player
	 			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
	 			version = "WIN 2,0,0,11";
	 		} catch (e) {
	 			version = -1;
	 		}
	 	}
	 	return version;
	}
	 // JavaScript helper required to detect Flash Player PlugIn version information
	/**
	 * Funkcja sprawdza wersje plugina, jesli jest IE opadla do sprawdzenia wersji ControlVersion()
	 * @return String z wersja plugina
	 * @see ControlVersion()  
	 */
	 function GetSwfVer(){
	 	// NS/Opera version >= 3 check for Flash plugin in plugin array
	 	var flashVer = -1;
	 	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;
	 			var descArray = flashDescription.split(" ");
	 			var tempArrayMajor = descArray[2].split(".");			
	 			var versionMajor = tempArrayMajor[0];
	 			var versionMinor = tempArrayMajor[1];
	 			var versionRevision = descArray[3];
	 			if (versionRevision == "") {
	 				versionRevision = descArray[4];
	 			}
	 			if (versionRevision[0] == "d") {
	 				versionRevision = versionRevision.substring(1);
	 			} else if (versionRevision[0] == "r") {
	 				versionRevision = versionRevision.substring(1);
	 				if (versionRevision.indexOf("d") > 0) {
	 					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
	 				}
	 			}
	 			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
	 		}
	 	}
	 	// MSN/WebTV 2.6 supports Flash 4
	 	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	 	// WebTV 2.5 supports Flash 3
	 	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	 	// older WebTV supports Flash 2
	 	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	 	else if ( isIE && isWin && !isOpera ) {
	 		flashVer = ControlVersion();
	 	}	
	 	return flashVer;
	 }
	
	 /**
	  * Sprawdza wersje
	  * @param reqMajorVer glowna wersja
	  * @param reqMinorVer podwersja
	  * @param reqRevision rewizja
	  * 
	  * @return bool true jesli znalazl ta wersje
	  */
	 function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
	 {
	 	versionStr = GetSwfVer();
	 	if (versionStr == -1 ) {
	 		return false;
	 	} else if (versionStr != 0) {
	 		if(isIE && isWin && !isOpera) {
	 			// Given "WIN 2,0,0,11"
	 			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
	 			tempString        = tempArray[1];			// "2,0,0,11"
	 			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
	 		} else {
	 			versionArray      = versionStr.split(".");
	 		}
	 		var versionMajor      = versionArray[0];
	 		var versionMinor      = versionArray[1];
	 		var versionRevision   = versionArray[2];
	
	         	// is the major.revision >= requested major.revision AND the minor version >= requested minor
	 		if (versionMajor > parseFloat(reqMajorVer)) {
	 			return true;
	 		} else if (versionMajor == parseFloat(reqMajorVer)) {
	 			if (versionMinor > parseFloat(reqMinorVer))
	 				return true;
	 			else if (versionMinor == parseFloat(reqMinorVer)) {
	 				if (versionRevision >= parseFloat(reqRevision))
	 					return true;
	 			}
	 		}
	 		return false;
	 	}
	 }
	
	 function AC_AddExtension(src, ext)
	 {
	   if (src.indexOf('?') != -1)
	     return src.replace(/\?/, ext+'?'); 
	   else
	     return src + ext;
	 }
	 /**
	  * Funckja genrruje tekst osadzenia na stronie
	  * @param objAttrs object paramtry tagu object
	  * @param params object parametry param
	  * @param embedAttrs object paramtry tagow typu embed
	  */
	 function AC_Generateobj(objAttrs, params, embedAttrs) 
	 { 
	     var str = '';
	     if (isIE && isWin && !isOpera)
	     {
	   		str += '<object ';
	   		for (var i in objAttrs)
	   			str += i + '="' + objAttrs[i] + '" ';
	   		for (var i in params)
	   			str += '><param name="' + i + '" value="' + params[i] + '" /> ';
	   		str += '></object>';
	     } else {
	   		str += '<embed ';
	   		for (var i in embedAttrs)
	   			str += i + '="' + embedAttrs[i] + '" ';
	   		str += '> </embed>';
	     }
	
	     document.write(str);
	 }
	 /**
	  * Funckja zmodywfikowana przez nas, usniete dodawanie rozszerzenia do sciezki
	  * uruchamia proces osadzania na stronie
	  * @see AC_GetArgs
	  * @see AC_Generateobj
	  */
	 function AC_FL_RunContent( params ){
	   var ret = 
	     AC_GetArgs
	     (  params, "", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
	      , "application/x-shockwave-flash"
	     );
	   AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
	 }
	 /**
	  * Funckja która tworzy obiekty z danymi do odpowiednich tagow html'owych
	  * do pozniejszej generacji tekst HTML
	  * obslugiwane atrybuty html sa w switch'u
	  * @return object obiekt z obiektami paramtrów do osadzenia
	  */
	 function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
	   var ret = new Object();
	   ret.embedAttrs = new Object();
	   ret.params = new Object();
	   ret.objAttrs = new Object();
	   for (var i=0; i < args.length; i=i+2){
	     var currArg = args[i].toLowerCase();    
	
	     switch (currArg){	
	       case "classid":
	         break;
	       case "pluginspage":
	         ret.embedAttrs[args[i]] = args[i+1];
	         break;
	       case "src":
	       case "movie":	
	         args[i+1] = AC_AddExtension(args[i+1], ext);
	         ret.embedAttrs["src"] = args[i+1];
	         ret.params[srcParamName] = args[i+1];
	         break;
	       case "onafterupdate":
	       case "onbeforeupdate":
	       case "onblur":
	       case "oncellchange":
	       case "onclick":
	       case "ondblClick":
	       case "ondrag":
	       case "ondragend":
	       case "ondragenter":
	       case "ondragleave":
	       case "ondragover":
	       case "ondrop":
	       case "onfinish":
	       case "onfocus":
	       case "onhelp":
	       case "onmousedown":
	       case "onmouseup":
	       case "onmouseover":
	       case "onmousemove":
	       case "onmouseout":
	       case "onkeypress":
	       case "onkeydown":
	       case "onkeyup":
	       case "onload":
	       case "onlosecapture":
	       case "onpropertychange":
	       case "onreadystatechange":
	       case "onrowsdelete":
	       case "onrowenter":
	       case "onrowexit":
	       case "onrowsinserted":
	       case "onstart":
	       case "onscroll":
	       case "onbeforeeditfocus":
	       case "onactivate":
	       case "onbeforedeactivate":
	       case "ondeactivate":
	       case "type":
	       case "codebase":
	         ret.objAttrs[args[i]] = args[i+1];
	         break;
	       case "id":
	       case "width":
	       case "height":
	       case "align":
	       case "vspace": 
	       case "hspace":
	       case "class":
	       case "title":
	       case "accesskey":
	       case "name":
	       case "tabindex":
	         ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
	         break;
	       default:
	         ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
	     }
	   }
	   ret.objAttrs["classid"] = classid;
	   if (mimeType) ret.embedAttrs["type"] = mimeType;
	   return ret;
	 }
	//--------------------tutaj zaczynaja sie dodatakowe funkcje
	/**
	 * Osadza flasha na stronie
	 * 
	 * @param object params Obiekt z parametrami
	 * 
	 * @return bool Czy flash zostal osadzony
	 */
	this.insert = function(param)
	{
		var versionArray = new Array();
		var versionArray = param.requiredVersion.split(/[\.,]{1}/);
		var requiredMajorVersion = parseInt( versionArray[0] );
		if( !requiredMajorVersion )
		{
			return false;
		}
		var requiredMinorVersion = !versionArray[1] ? 0 : parseInt( versionArray[1] ) ;
		var requiredRevision = !versionArray[2] ? 0 : parseInt( versionArray[2] ) ;
		// Sprawdza czy player jest w wersji ktora moze odpalic Player Product Install (6.0r65)
		var hasProductInstall = DetectFlashVer(6, 0, 65);
		// Sprawdza czy jest to rzadana prze nas wersja
		var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
		
		if( ( !hasProductInstall || !hasReqestedVersion) && params.noForceInstall )
		{
			return false;
		}
		var fParams = [];
		for( var i in params )
		{
			if( "requiredVersion" == i || "noForceInstall" == i )
			{
				continue;
			}

			fParams[ fParams.length ] = i;
			fParams[ fParams.length ] = params[i];
		}
		if ( hasProductInstall && !hasReqestedVersion) {
			// MMdoctitle is the stored document.title value used by the installation process to close the window that started the process
			// This is necessary in order to close browser windows that are still utilizing the older version of the player after installation has completed
			// DO NOT MODIFY THE FOLLOWING FOUR LINES
			// Location visited after installation is complete if installation is required
			var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
			var MMredirectURL = window.location;
		    document.title = document.title.slice(0, 47) + " - Instalacja Flash Player";
		    var MMdoctitle = document.title;
		    	
		    //fParams.src = productInstallPath+"playerProductInstall.swf"; 
		    //fParams.flashVars = "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle;
		    //fParams.type = "application/x-shockwave-flash";
		    //fParams.pluginspage = "http://www.adobe.com/go/getflashplayer";
			
		    fParams[ fParams.length ] = "type";
			fParams[ fParams.length ] = "application/x-shockwave-flash";
			fParams[ fParams.length ] = "pluginspage";
			fParams[ fParams.length ] = "http://www.adobe.com/go/getflashplayer";
			var hasFlashVars = false;
			for(var i =0 ; i <fParams.length; i++) {
				if (fParams[i] == "src") {
					fParams[i+1] = productInstallPath+"playerProductInstall.swf";
					break;
				}
			}
			for(var i =0 ; i <fParams.length; i++) {
				if (fParams[i] == "flashVars") {
					fParams[i+1] = "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle;
					hasFlashVars = true;
					break;
				}
			}
			if (!hasFlashVars) {
				fParams[ fParams.length ] = "flashVars";
				fParams[ fParams.length ] = "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle;
				
			}
		   AC_FL_RunContent( fParams );
		} else  if ( hasReqestedVersion || !hasProductInstall )  {
			// Jesli zostala wykryta poprawna wersja 
			// embedujemy Flash SWF i dolaczamy wszystkie parametry
			//fParams.type = "application/x-shockwave-flash";
			//fParams.pluginspage = "http://www.adobe.com/go/getflashplayer";
			fParams[ fParams.length ] = "type";
			fParams[ fParams.length ] = "application/x-shockwave-flash";
			fParams[ fParams.length ] = "pluginspage";
			fParams[ fParams.length ] = "http://www.adobe.com/go/getflashplayer";
			AC_FL_RunContent( fParams );
		  } else {  // flash jest za stary albo nie mozna wykryc plugina
		    var alternateContent = 'Ta strona wymaga Flasha w wersji: ' + param.requiredVersion
		   	+ '<a href=http://www.adobe.com/go/getflash/>Pobierz Flash</a>';
		    document.write(alternateContent);  // daj nie-flashowy content
		  }
	    return true;
	}
}

