//  DevalVR + QuickTime + PTviewer + Flash + Shockwave - Javascript workaround
//
//	Author: fiero http://www.devalvr.com
//  Version: 3.5
//  modified and extended by Andreas Kaempf / http://www.360-erfurt.de 
//		
//	To embed a panorama just include these lines in your HTML file (change filenames):
//
//	<SCRIPT type="text/javascript" src="detectvr.js"></SCRIPT>
//	<SCRIPT type="text/javascript">writevrcode("testfileForQT.mov","testfileForJava.ivp","testfileForFlash.swf","testfileForShockwave.mov","100%","94%");</SCRIPT>


var minQTVersion = "5.0.0";			// minimal required version checked for QuickTime
var minDevalVRVersion = "0,3,3,0";  // minimal required version checked for DevalVR
var minFlashVersion = "8.0.0";		// minimal required version checked for Flash

var makeDevalVRdefault =1;			// Sets DevalVR as default when QT and DevalVR are installed and "Detect" mode is selected
var enableSizeLimits=0;				// 0: disable  1: enable		(size limits for QT and DevalVR)
var enableSizeLimitsJava=0;			// 0: disable  1: enable		(size limits for Java)
var enableSizeLimitsFlash=0;		// 0: disable  1: enable     (size limits for Flash)
var enableSizeRatio=0;				// 0: disable size ratio    1: enable size ratio
var sizeRatio=6/3;					// aspect ratio, horizontal/vertical proportions
var maxViewerWidth="1280";
var maxViewerHeight="1024";
var maxViewerWidthJava="900";
var maxViewerHeightJava="700";
var maxViewerWidthFlash="900";
var maxViewerHeightFlash="700";

/////////////////////////////////////////////////////////////////////////////////////////////////

var isOpera=(navigator.userAgent.indexOf('Opera')!=-1);
var isIE=((navigator.appVersion.indexOf("MSIE") != -1) && !isOpera);
var isWindows=(navigator.platform.indexOf('Win')!=-1);
var isMac=(navigator.platform.indexOf('Mac')!=-1 || navigator.platform.indexOf('PowerPC')!=-1);
var pluginDevalVRInstalled = 0;
var pluginQTInstalled = 0;
var javaInstalled=navigator.javaEnabled();
var pluginFlashInstalled = 0; 
var favoriteViewer=getCookie("panorama_viewer");
if(!favoriteViewer) favoriteViewer="DETECT";  //DEVALVR , QT, FLASH, JAVA, SHOCKWAVE, PangeaVR, GLPanoView or DETECT
var orgsizepluginx,orgsizepluginy;
var sizepluginx;
var sizepluginy;
var writeDevalVR=0;
var writeQT=0;
var writeFlash=0;
var writeJAVA=0;
var writeShockwave=0;
var writePangeaVR=0;
var writeGLPanoView=0
var writeInstallDevalVR=0;
var writeInstallQT=0;
var writeInstallFlash=0;
var writeInstallJava=0;
var writeInstallShockwave=0;
var writeInstallPangeaVR=0;
var writeInstallGLPanoView=0;

function writevrcode(movfile,javafile,flashfile,shockwavefile,openglfile,sizex,sizey)
{
	//old versions of writevrcode only was 4 parameters
	if(flashfile)
	{
		  flashcad=flashfile.toString();
		  flashcad.toLowerCase();
		  if(flashcad.indexOf(".swf")==-1)
		  {
				sizey=sizex;
				sizex=flashfile;
				flashfile=null;	
		  }
	}

	var flashVersion=minFlashVersion.split(".");
	pluginFlashInstalled = DetectFlashVer(parseInt(flashVersion[0]),parseInt(flashVersion[1]),parseInt(flashVersion[2])); 

	if(isWindows)
	{
		if (!isIE) 
		{
			if (navigator.mimeTypes && navigator.mimeTypes["application/x-devalvrx"] && navigator.mimeTypes["application/x-devalvrx"].enabledPlugin)
			{
				var words = navigator.plugins["DevalVR 3D Plugin"].description.split(" ");
				var version = words[3].split(",");
				var min = minDevalVRVersion.split(",");
				for (var i = 0; i < 4; i++)
				{
					if(parseInt(version[i])>parseInt(min[i])) 
					{
						pluginDevalVRInstalled=1;
						break;
					}
					else if(parseInt(version[i])<parseInt(min[i]))
					{
						break;
					}
					else if(parseInt(version[i])==parseInt(min[i]) && i==3)
						pluginDevalVRInstalled=1;
				}
			}	
		    if(navigator.mimeTypes && navigator.mimeTypes["video/quicktime"] && navigator.mimeTypes["video/quicktime"].enabledPlugin)
		    {
				var qtnumber=-1;
				for (var i = 0; i < navigator.plugins.length; i++)
				{
					if(navigator.plugins[i].name.indexOf("QuickTime Plug-in")!=-1)
					{
						qtnumber=i;
						break;
					}
				}
				if(qtnumber!=-1)
				{
					var words = navigator.plugins[qtnumber].name.split(" ");
					var version = words[2].split(".");
					var min = minQTVersion.split(".");
					for (var i = 0; i < 3; i++)
					{
						if(parseInt(version[i])>parseInt(min[i])) 
						{
							pluginQTInstalled=1;
							break;
						}
						else if(parseInt(version[i])<parseInt(min[i]))
						{
							break;
						}
						else if(parseInt(version[i])==parseInt(min[i]) && i==2)
							pluginQTInstalled=1;
					}
				}
			}
		}
		else 
		{
			var devalvrobj=null;
			var objQuickTime=null;
			try{
				devalvrobj=new ActiveXObject('DevalVRXCtrl.DevalVRXCtrl.1');
				if(devalvrobj) 
				{
					pluginDevalVRInstalled=1;
					delete devalvrobj;
				}
			}catch(e){}
			try
			{
				objQuickTime=new ActiveXObject('QuickTimeCheckObject.QuickTimeCheck.1');
				if (objQuickTime)
				{
					if(objQuickTime.IsQuickTimeAvailable(0))
					{
						pluginQTInstalled=1;
					}
					delete objQuickTime;
				}
			}catch(e){}
		}
		
	}
	writeDevalVR=0;
	writeQT=0;
	writeJAVA=0;
	writeFlash=0;
	writeShockwave=0;
	writePangeaVR=0;
	writeGLPanoView=0;
	writeInstallDevalVR=0;
	writeInstallQT=0;
	writeInstallFlash=0;
	writeInstallJava=0;
	writeInstallShockwave=0;
	writeInstallPangeaVR=0;
	writeInstallGLPanoView=0;
	
	if(isWindows)
	{
		if(favoriteViewer=="DETECT" || (favoriteViewer=="JAVA" && !javafile) || (favoriteViewer=="FLASH" && !flashfile) || (favoriteViewer=="OPENGL" && !openglfile))
		{
			if(pluginDevalVRInstalled && pluginQTInstalled)
			{
				if(makeDevalVRdefault) writeDevalVR=1; 
				else writeQT=1;
			}
			else if(pluginDevalVRInstalled) writeDevalVR=1; 
			else if(pluginQTInstalled) writeQT=1;
			else if(pluginFlashInstalled && flashfile) writeFlash=1;
			else if(javaInstalled && javafile) writeJAVA=1;
			else if(javaInstalled && shockwavefile) writeShockwave=1;
			else if(pluginQTInstalled && openglfile) writeGLPanoView=1;
			else writeInstallDevalVR=1;
		}
		else if(favoriteViewer=="DEVALVR")
		{
			if(pluginDevalVRInstalled) writeDevalVR=1;
			else writeInstallDevalVR=1;
		}
		else if(favoriteViewer=="QT")
		{
			if(pluginQTInstalled) writeQT=1;
			else writeInstallQT=1;
		}
		else if(favoriteViewer=="FLASH")
		{
			if(pluginFlashInstalled) writeFlash=1;
			else writeInstallFlash=1;
		}
		else if(favoriteViewer=="JAVA") 
		{
			if(javaInstalled) writeJAVA=1;
			else writeInstallJava=1;
		}
		else if(favoriteViewer=="SHOCKWAVE") 
		{
			if(javaInstalled) writeShockwave=1;
			else writeInstallShockwave=1;
		}
		/*else if(favoriteViewer=="OPENGL") 
		{
	       writeGLPanoView=1;
		}*/
		else writeJAVA=1;	//Use JAVA in WIN computers
	}
	else if(isMac) 
	{
		if(favoriteViewer=="JAVA" && javafile) 
		{
			if(javaInstalled) writeJAVA=1;
			else writeInstallJava=1;
		}
		else if(favoriteViewer=="FLASH" && flashfile) 
		{
			if(pluginFlashInstalled) writeFlash=1;
			else writeInstallFlash=1;
		}
		/*else if(favoriteViewer=="SHOCKWAVE") 
		{
			if(shockwaveInstalled) writeShockwave=1;
			else writeInstallShockwave=1;
		}*/
		else if(favoriteViewer=="OPENGL") 
		{
			writePangeaVR=1;
		}
		else writeQT=1;	//Use QT in Mac computers
	}
	else 
	{
		if(javaInstalled) writeJAVA=1;  //Use Java always in Linux
		else writeInstallJava=1;
	}
	
	if(!sizex) sizex="100%";
	if(!sizey) sizey="94%";

	if(writeJAVA) enableSizeLimits=enableSizeLimitsJava;
	else if(writeFlash) enableSizeLimits=enableSizeLimitsFlash;
	
	orgsizepluginx=sizex;
	orgsizepluginy=sizey;
	
	CalcLimits(sizex,sizey);
	sizex=sizepluginx;
	sizey=sizepluginy;
	
	if(writeDevalVR)
	{
		p2q_EmbedDevalVR(movfile,sizex,sizey,'filter','0');
	}
	else if(writeQT)
	{
		p2q_EmbedQuicktime(movfile,sizex,sizey,'scale','tofit','autostart','true','kioskmode','true','controller','true');
	}
	else if(writeJAVA)
	{
		p2q_EmbedPtviewer(javafile,sizex,sizey,'fov','120','cursor','MOVE','showToolbar','true','imgLoadFeedback','false');
	}
	else if(writeFlash)
	{
		p2q_EmbedFlash(javafile,sizex,sizey,'bgcolor', '#f0f0f0', 'play', 'true', 'cache','true', 'autoplay','true');
	}
	else if(writeShockwave)
	{
		p2q_EmbedShockwave(shockwavefile,sizex,sizey);
	}
	else if(writePangeaVR)
	{
		p2q_EmbedPangeaVR(movfile,sizex,sizey);
	}
	else if(writeGLPanoView)
	{
		p2q_EmbedGLPanoView(movfile,sizex,sizey);
	}

	
	
	else if(writeInstallDevalVR)
	{
		var str='<DIV align=center><table border="0" cellpadding="0" cellspacing="0" style="WIDTH: ' + sizex + '; HEIGHT: ' + sizey + '" width="'+sizex+'"  height="'+sizey+'"><tr><td align="center" valign="middle">';
		str+='DevalVR plugin is required to see this content';
		str+='<BR><BR><A href="http://www.devalvr.com/install/">click here to install (250 KB, installation only takes a few seconds, Windows only!)</A>';
		str+='<BR><BR><A href="javascript:reloadPage()">click here after installing to reload page</A>';
		str+='</td></tr></table></DIV>';
		document.writeln(str);
	}
	else if(writeInstallFlash)
	{
		var str='<DIV align=center><table border="0" cellpadding="0" cellspacing="0" style="WIDTH: ' + sizex + '; HEIGHT: ' + sizey + '" width="'+sizex+'"  height="'+sizey+'"><tr><td align="center" valign="middle">';
		str+='This content requires the Adobe Flash Player Version 8 or higher.';
		str+='<BR><BR><A href="http://www.adobe.com/go/getflash/" target="_blank">click here to install Flash Player</A>';
		str+='</td></tr></table></DIV>';
		document.writeln(str);
	}
	else if(writeInstallQT)
	{
		var str='<DIV align=center><table border="0" cellpadding="0" cellspacing="0" style="WIDTH: ' + sizex + '; HEIGHT: ' + sizey + '" width="'+sizex+'"  height="'+sizey+'"><tr><td align="center" valign="middle">';
		str+='This content requires QuickTime Player.';
		str+='<BR><BR><A href="http://www.apple.com/quicktime/download/" target="_blank">click here to install QuickTime</A>';
		str+='</td></tr></table></DIV>';
		document.writeln(str);
	}
	else if(writeInstallJava)
	{
		var str='<DIV align=center><table border="0" cellpadding="0" cellspacing="0" style="WIDTH: ' + sizex + '; HEIGHT: ' + sizey + '" width="'+sizex+'"  height="'+sizey+'"><tr><td align="center" valign="middle">';
		str+='This content requires Java Software.';
		str+='<BR><BR><A href="http://java.com/en/download/" target="_blank">click here to install Java</A>';
		str+='</td></tr></table></DIV>';
		document.writeln(str);
	}
	else if(writeInstallShockwave)
	{
		var str='<DIV align=center><table border="0" cellpadding="0" cellspacing="0" style="WIDTH: ' + sizex + '; HEIGHT: ' + sizey + '" width="'+sizex+'"  height="'+sizey+'"><tr><td align="center" valign="middle">';
		str+='This content requires Shockwave Player.';
		str+='<BR><BR><A href="http://www.adobe.com/shockwave/download/" target="_blank">click here to install Shockwave</A>';
		str+='</td></tr></table></DIV>';
		document.writeln(str);
	}
	else if(writeInstallPangeaVR)
	{
		var str='<DIV align=center><table border="0" cellpadding="0" cellspacing="0" style="WIDTH: ' + sizex + '; HEIGHT: ' + sizey + '" width="'+sizex+'"  height="'+sizey+'"><tr><td align="center" valign="middle">';
		str+='This content requires PangeaVR Plugin. (Mac OS X only!)';
		str+='<BR><BR><A href="http://www.pangeasoft.net/pano/plugin/downloads.html" target="_blank">click here to install PangeaVR Plugin</A>';
		str+='</td></tr></table></DIV>';
		document.writeln(str);
	}
	else if(writeInstallGLPanoView)
	{
		var str='<DIV align=center><table border="0" cellpadding="0" cellspacing="0" style="WIDTH: ' + sizex + '; HEIGHT: ' + sizey + '" width="'+sizex+'"  height="'+sizey+'"><tr><td align="center" valign="middle">';
		str+='This content requires GLPanoView Player. (Windows only!)';
		str+='<BR><BR><A href="http://sinnfrei.at/glpanoview/GLPanoView_Install_0_6_1a.exe" target="_blank">click here to install GLPanoView Player (1,6 MB)</A>';
		str+='</td></tr></table></DIV>';
		document.writeln(str);
	}
	if(!writeInstallDevalVR && !writeInstallFlash && !writeInstallQT && !writeInstallJava && !writeInstallShockwave && !writeInstallPangeaVR && !writeInstallGLPanoView) window.onresize=OnResizeWindow;
}

function OnResizeWindow()
{
	CalcLimits(orgsizepluginx,orgsizepluginy);

	if(isIE || isOpera)
	{
		document.PANORAMAID.style.width=sizepluginx;
		document.PANORAMAID.style.height=sizepluginy;
	}
	else
	{	
		document.PANORAMAID.width=sizepluginx;
		document.PANORAMAID.height=sizepluginy;
	}
	
	//if(writeJAVA) window.location.reload();		PTviewer does not resize its viewer window
}

function CalcLimits(sizex, sizey)
{
	var sizew,sizeh;
	
	if(enableSizeLimits || enableSizeRatio)
	{
		sizex=sizex.toString();
		sizey=sizey.toString();
		pw=sizex.indexOf("px");
		if(pw!=-1) sizex=sizex.substring(0,pw);
		pw=sizey.indexOf("px");
		if(pw!=-1) sizey=sizey.substring(0,pw);
	
		sizew=getPageWidth();
		sizeh=getPageHeight();
	
		pw=sizex.indexOf("%");
		if(pw!=-1)
		{
			percent=sizex.substring(0,pw);
			sizex=(sizew*percent)/100;
		}
		pw=sizey.indexOf("%");
		if(pw!=-1)
		{
			percent=sizey.substring(0,pw);
			sizey=(sizeh*percent)/100;
		}
	
	}
	if(writeJAVA)
	{
		maxx=maxViewerWidthJava;
		maxy=maxViewerHeightJava;
	}
	else if(writeFlash)
	{
		maxx=maxViewerWidthFlash;
		maxy=maxViewerHeightFlash;
	}
	else
	{
		maxx=maxViewerWidth;
		maxy=maxViewerHeight;
	}
	if(enableSizeLimits)
	{
		if(sizex>maxx) sizex=maxx;
		if(sizey>maxy) sizey=maxy;
	}	
	if(enableSizeRatio)
	{
		x=sizey*sizeRatio;
		if(x<sizex)
		{
			sizex=x;
			if(enableSizeLimits && sizex>maxx) sizex=maxx;
		}
	}
	if(enableSizeLimits || enableSizeRatio)
	{
		sizex=((sizex*100.0)/sizew);
		sizey=((sizey*100.0)/sizeh);
		if(sizex<1) sizex=1; 
		if(sizex>100) sizex=100; 
		if(sizey<1) sizey=1; 
		if(sizey>100) sizey=100; 
		sizex=sizex+"%";
		sizey=sizey+"%";
	}
	sizepluginx=sizex;
	sizepluginy=sizey;
}

function reloadPage()
{
	if(!isIE) navigator.plugins.refresh(true);
	window.location.reload();
}

function getCookie(nombre)
{
	var dcookie=document.cookie;
	var cname=nombre+"=";
	var longitud=dcookie.length;
	var inicio=0;
	while(inicio<longitud)
	{
		var vbegin=inicio+cname.length;
		if(dcookie.substring(inicio,vbegin)==cname)
		{
			var vend=dcookie.indexOf(";",vbegin);
			if(vend==-1) vend=longitud;
			return unescape(dcookie.substring(vbegin,vend));
		}
		inicio=dcookie.indexOf(" ",inicio)+1;
		if(inicio==0) break;
	}
	return null;
}

function setCookie(name, value, expires)
{
	if(!expires)
	{ 
		expires=new Date();
		expires.setTime(expires.getTime()+(24*3600*1000*365));
	}
	document.cookie=name+"="+escape(value)+"; expires=" + expires.toGMTString()+ "; path=/";
}

function changeFavoriteViewer(favoriteviewer)
{
	setCookie("panorama_viewer",favoriteviewer);
	self.location.reload();
}

function ShowViewerSelection(options)
{
	options.toLowerCase();
	var vertical=(options.indexOf("horizontal")==-1);
	var str='';
	
   	viewer=getCookie("panorama_viewer");
	

	
	if(!viewer) viewer="DETECT";
    
	str+='<form><div style="float:right"><select style="margin-right:20px;margin-left:20px;font-size:10px;color:#000000;font-family:arial;background-color:#fff;background-font-size:9px;" name="choice" onChange="changeFavoriteViewer(this.form.choice.options[this.form.choice.selectedIndex].value)">';

	if(options.indexOf("detect")!=-1)
	{
		//str+='<INPUT title="&#8250; Automatic PLUGIN - Detection" id=imageViewer type=image name=imageViewer src=/vr_engine/icons/icon_autodetect'+(viewer=="DETECT"?'_active.png':'.png')+' OnClick="javascript:changeFavoriteViewer(\'DETECT\');">';
		//str+='<INPUT id=radioViewer type=radio name=radioViewer '+(viewer=="DETECT"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'DETECT\');">Detect plugin ';
		//if(vertical) str+='<BR>';
          str+='<option value="DETECT" '+(viewer=="DETECT"?'selected':'')+'>Autodetect Best VR Viewer</option>';
	}
	if(options.indexOf("devalvr")!=-1)
	{
		//str+='<INPUT title="&#8250; DEVALVR Viewer - Best Performance + Fullscreen Option" id=imageViewer type=image name=imageViewer src=/vr_engine/icons/icon_devalvr'+(viewer=="DEVALVR"?'_active.png':'.png')+' OnClick="javascript:changeFavoriteViewer(\'DEVALVR\');">';
		//str+='<INPUT type=radio name=radioViewer '+(viewer=="DEVALVR"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'DEVALVR\');">DevalVR ';
		//if(vertical) str+='<BR>';
		str+='<option value="DEVALVR" '+(viewer=="DEVALVR"?'selected':'')+'>DevalVR (PC Only)</option>';
	}
	if(options.indexOf("shockwave")!=-1)
	{
		//str+='<INPUT title="&#8250; SHOCKWAVE Player - VERY GOOD Performance" id=imageViewer type=image name=imageViewer src=/vr_engine/icons/icon_shockwave'+(viewer=="SHOCKWAVE"?'_active.png':'.png')+' OnClick="javascript:changeFavoriteViewer(\'SHOCKWAVE\');">';
		//str+='<INPUT type=radio name=radioViewer '+(viewer=="SHOCKWAVE"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'SHOCKWAVE\');">Shockwave ';
		//if(vertical) str+='<BR>';
		str+='<option value="SHOCKWAVE" '+(viewer=="SHOCKWAVE"?'selected':'')+'>ShockWave SPI-V</option>';

	}
	if(options.indexOf("opengl")!=-1)
	{
		//str+='<INPUT title="&#8250; OPENGL Viewer - VERY GOOD Performance" id=imageViewer type=image name=imageViewer src=/vr_engine/icons/icon_opengl'+(viewer=="OPENGL"?'_active.png':'.png')+' OnClick="javascript:changeFavoriteViewer(\'OPENGL\');">';
		//str+='<INPUT type=radio name=radioViewer '+(viewer=="OPENGL"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'OPENGL\');">GLPanoView (WIN) / PangeaVR (MAC) ';
		//if(vertical) str+='<BR>';
		str+='<option value="OPENGL" '+(viewer=="OPENGL"?'selected':'')+'>PangeaVR (Mac Only)</option>';

	}
	
	if(options.indexOf("qt")!=-1)
	{
		//str+='<INPUT title="&#8250; QUICKTIME Player -  GOOD Performance" id=imageViewer type=image name=imageViewer src=/vr_engine/icons/icon_quicktime'+(viewer=="QT"?'_active.png':'.png')+' OnClick="javascript:changeFavoriteViewer(\'QT\');">';
		//str+='<INPUT type=radio name=radioViewer '+(viewer=="QT"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'QT\');">QuickTime ';
		//if(vertical) str+='<BR>';
		str+='<option value="QT" '+(viewer=="QT"?'selected':'')+'>QuickTime VR</option>';

	}
	if(options.indexOf("java")!=-1)
	{
		
		//str+='<INPUT title="&#8250; JAVA Player - VERY GOOD Performance + Fullscreen Option + Effects" id=imageViewer type=image name=imageViewer src=/vr_engine/icons/icon_java'+(viewer=="JAVA"?'_active.png':'.png')+' OnClick="javascript:changeFavoriteViewer(\'JAVA\');">';
		//str+='<INPUT type=radio name=radioViewer '+(viewer=="JAVA"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'JAVA\');">Java ';
		//if(vertical) str+='<BR>';
		str+='<option value="JAVA" '+(viewer=="JAVA"?'selected':'')+'>Java VR (Java Panorama Player)</option>';

	}

	if(options.indexOf("flash")!=-1)
	{
		//str+='<INPUT  title="&#8250; FLASH Player - MEDIUM Performance" id=imageViewer type=image name=imageViewer src=/vr_engine/icons/icon_flash'+(viewer=="FLASH"?'_active.png':'.png')+' OnClick="javascript:changeFavoriteViewer(\'FLASH\');">';
		//str+='<INPUT type=radio name=radioViewer '+(viewer=="FLASH"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'FLASH\');">Flash ';
		//if(vertical) str+='<BR>';
		str+='<option value="FLASH" '+(viewer=="FLASH"?'selected':'')+'>Flash VR (Flash Panorama Player)</option>';

	}
	
	//if(!vertical) str+='<BR>';
	
	str+='</select></div></form>';
	document.write(str);
}

function getPageHeight()
{
	var ret;
	if(isIE) ret=document.body.clientHeight-document.body.topMargin-document.body.bottomMargin;
	else ret=window.innerHeight-16;
	
	return ret;
}

function getPageWidth()
{
	var ret;
	if(isIE) ret=document.body.clientWidth-document.body.leftMargin-document.body.rightMargin;
	else ret=window.innerWidth-16;
	
	return ret;
}

function IEGetSwfVer()
{
	flashVer=0;
			
	var objFlash=null;
	for(i=25;i>0 && flashVer==0;i--)
	{
		try{
			objFlash=new ActiveXObject('ShockwaveFlash.ShockwaveFlash.'+i);
			if(objFlash) 
			{
				flashVer=objFlash.GetVariable("$version");
				delete objFlash
			}
		}catch(e){}
	}
	return flashVer;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function JSGetSwfVer()
{
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	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 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;
	// Can't detect in all other cases
	else {
		
		flashVer = -1;
	}
	return flashVer;
}
 
// If called with no parameters this function returns a floating point value 
// which should be the version of the Flash Player or 0.0 
// ex: Flash Player 7r14 returns 7.14
// If called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) 
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
  	if (isIE && isWindows && !isOpera) {
		versionStr = IEGetSwfVer();
	} else {
		versionStr = JSGetSwfVer();		
	}
	if (versionStr == -1 ) { 
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWindows && !isOpera) {
			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);
    	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
			return true;
		} else {
			return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );	
		}
	}
	return (reqVer ? false : 0.0);
}

/*  
    IE + ActiveX + EOLAS - Javascript workaround

	Author: 
		Thomas Rauscher <rauscher@pano2qtvr.com> http://www.pano2qtvr.com
		Modified by Armando Saenz
		
	To embed a panorama just call one of these functions with 
	additional pairs for additional paramameters f.e:
	
	p2q_EmbedQuicktime('pano.mov','640','480','scale','tofit','background','#eeeeee');
	
	Use this file at your own risk
*/

window.p2q_Version	= 1.0;

function p2q_EmbedQuicktime(sFile,sWidth,sHeight) {
	document.writeln('<div align=center class="container"><object id="PANORAMAID" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"');
	document.writeln(' codebase="http://www.apple.com/qtactivex/qtplugin.cab"');
	document.writeln('  style="WIDTH: ' + sWidth + '; HEIGHT: ' + sHeight + '" width="' + sWidth + '" height="' + sHeight + '" >');
	document.writeln('  <param name="src" value="quicktime/' + sFile + '">');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  <param name="' + arguments[i] + '" value="' + arguments[i+1] + '">');
	}
	document.writeln('<embed name="PANORAMAID" width="' + sWidth + '" height="' + sHeight + '"');
	document.writeln('	pluginspage="http://www.apple.com/quicktime/download/"');
	document.writeln('	type="video/quicktime"');
	document.writeln('	src="quicktime/' + sFile + '"');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  ' + arguments[i] + '="' + arguments[i+1] + '"');
	}
	document.writeln('	/>');
	document.writeln('</object></div>');
}

function p2q_EmbedDevalVR(sFile,sWidth,sHeight) {
	document.writeln('<div align=center><object id="PANORAMAID" classid="clsid:5D2CF9D0-113A-476B-986F-288B54571614"');
	document.writeln(' codebase="http://www.devalvr.com/instalacion/plugin/devalocx.cab');
	document.writeln('#version='+minDevalVRVersion+'"');
	document.writeln('  style="WIDTH: ' + sWidth + '; HEIGHT: ' + sHeight + '" width="' + sWidth + '" height="' + sHeight + '" >');
	document.writeln('  <param name="autoplay" VALUE="3">');
	/*document.writeln('  <param name="sequencefile" VALUE="http://cuba.refocus.de/wp-content/uploads/sequence.txt">');*/
	document.writeln('  <param name="src" value="quicktime/' + sFile + '">');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  <param name="' + arguments[i] + '" value="' + arguments[i+1] + '">');
	}
	document.writeln('<embed name="PANORAMAID" width="' + sWidth + '" height="' + sHeight + '"');
	document.writeln('	pluginspage="http://www.devalvr.com/instalacion/plugin/install.html"');
	document.writeln('  autoplay="3"');
	/*document.writeln('	sequencefile="http://cuba.refocus.de/wp-content/uploads/sequence.txt"');*/
	document.writeln('	type="application/x-devalvrx"');
	document.writeln('	src="quicktime/' + sFile + '"');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  ' + arguments[i] + '="' + arguments[i+1] + '"');
	}
	document.writeln('	/>');
	document.writeln('</object></div>');
}

/*function p2q_EmbedFlash(sFile,sWidth,sHeight) {
	document.writeln('<DIV align=center><object id="PANORAMAID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"');
	document.writeln(' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab');
	document.writeln('  style="WIDTH: ' + sWidth + '; HEIGHT: ' + sHeight + '" width="' + sWidth + '" height="' + sHeight + '" >');
	document.writeln('  <param name="src" value="http://www.360-erfurt.de/vr_engine/flash/' + sFile + '">');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  <param name="' + arguments[i] + '" value="' + arguments[i+1] + '">');
	}
	document.writeln('<embed name="PANORAMAID" width="' + sWidth + '" height="' + sHeight + '"');
	document.writeln('	pluginspage="http://www.macromedia.com/go/getflashplayer"');
	document.writeln('	type="application/x-shockwave-flash"');
	document.writeln('	src="http://www.360-erfurt.de/vr_engine/flash/' + sFile + '"');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  ' + arguments[i] + '="' + arguments[i+1] + '"');
	}
	document.writeln('	/>');
	document.writeln('</object></div>');
}*/

function p2q_EmbedFlash(sFile,sWidth,sHeight) {
	document.writeln('<div align=center id="pano_div"><object id="PANORAMAID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"');	
	/*document.writeln(' codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab#version=9,0,0,0');*/
	document.writeln('  style="WIDTH: ' + sWidth + '; HEIGHT: ' + sHeight + '" width="' + sWidth + '" height="' + sHeight + '" >');
	document.writeln('<param name="movie" value="/wp-content/uploads/pure/flash/PurePlayer.swf" />');
	document.writeln('<param name="allowScriptAccess" value="sameDomain" />');
    /*document.writeln('<param name="wmode" value="transparent" />');*/
	document.writeln('<param name="allowFullScreen" value="true" />');
	document.writeln('  <param name="flashvars" value="panorama=java/' + sFile + '">');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  <param name="' + arguments[i] + '" value="' + arguments[i+1] + '">');
	}
	document.writeln('<embed src="/wp-content/uploads/pure/flash/PurePlayer.swf" name="PANORAMAID" width="' + sWidth + '" height="' + sHeight + '"');
	document.writeln('	pluginspage="http://www.adobe.com/go/getflashplayer"');
	document.writeln('	play="true" loop="false" quality="high" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash"');
	document.writeln('	flashvars="panorama=java/' + sFile + '"');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  ' + arguments[i] + '="' + arguments[i+1] + '"');
	}
	document.writeln('	/>');
	document.writeln('</object></div>');
}

function p2q_EmbedPtviewer(sFile,sWidth,sHeight) {
	document.writeln('<div align=center><applet name="PANORAMAID" archive="/wp-content/uploads/pure/PurePlayerPro.jar" code="PurePlayerPro"'); 
	document.writeln('  width="' + sWidth + '" height="' + sHeight + '">');
	document.writeln('  <param name="gui" value="/wp-content/uploads/pure/gui.ivu">');
	document.writeln('	<param name="panorama" value="java/' + sFile + '">');
	document.writeln('<param name="optimizememory" value="true">');
	document.writeln('<param name="singlepanorama" value="true">');
	document.writeln('<param name="lang" value="de">'); 
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  <param name="' + arguments[i] + '" value="' + arguments[i+1] + '">');
	}
	document.writeln('</applet></DIV>');
}
function p2q_EmbedShockwave(sFile,sWidth,sHeight) {
	document.writeln('<div align=center><object id="PANORAMAID" width=' + sWidth + ' height="' + sHeight + '" classid="clsid:166B1BCA-3F9C-11CF-8075-444553540000"');
    document.writeln(' codebase="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0">');
    document.writeln('  <param name=src value="/wp-content/uploads/spi-v/SPi-V.dcr">');
    document.writeln('  <param name=swURL value="http://cuba.refocus.de/wp-content/uploads/quicktime/qtparser.php?mov='+ sFile +'">');
    document.writeln('  <param name=swStretchStyle value=stage>');
    document.writeln('  <param name=swRemote value=swContextMenu=\'FALSE\'>');
    document.writeln('  <param name=progress value=true>'); 
    document.writeln('  <param name=logo value=false>');  
    document.writeln('  <param name=bgColor value=#000000>');
    document.writeln('  <embed width="' + sWidth + '" height="' + sHeight + '" type="application/x-director"');
	document.writeln('  pluginspage="http://www.macromedia.com/shockwave/download/" src="/wp-content/uploads/spi-v/SPi-V.dcr"');
	document.writeln('  swURL="http://cuba.refocus.de/wp-content/uploads/quicktime/qtparser.php?mov='+ sFile +'" swStretchStyle=stage swRemote="swContextMenu=\'FALSE\'" progress=TRUE logo=FALSE bgColor=#000000');
	document.writeln('	/>');
	document.writeln('</object></div>');
}
function p2q_EmbedGLPanoView(sFile,sWidth,sHeight) {
	document.writeln('<div align=center><object id="PANORAMAID" width=' + sWidth + ' height="' + sHeight + '" clsid:C8F23A13-3536-49D9-9708-A421DE358D6D"');
    document.writeln('  align="center" hspace="0" vspace="0">');
	document.writeln('  <param name="src" value="quicktime/' + sFile + '">');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  <param name="' + arguments[i] + '" value="' + arguments[i+1] + '">');
	}
	document.writeln(' <param name="controller" value="true">');
	document.writeln(' <param name="magfilter" value="linear">');
    document.writeln(' <embed type="graphics/pangeavr" name="PANORAMAID" width="' + sWidth + '" height="' + sHeight + '"');
	document.writeln(' type="application/glpanoview" magfilter="linear" controller="true" ');
	document.writeln('	src="quicktime/' + sFile + '"');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  ' + arguments[i] + '="' + arguments[i+1] + '"');
	}
	document.writeln('	/>');
	document.writeln('</object></div>');

}
function p2q_EmbedPangeaVR(sFile,sWidth,sHeight) {
    document.writeln(' <div align=center><embed name="PANORAMAID" width="' + sWidth + '" height="' + sHeight + '"');
    document.writeln('	pluginspage="http://www.pangeasoft.net/pano/plugin/downloads.html"');
    document.writeln('  type="application/pangeavr"');
    document.writeln('  COMPRESSION="false" CONTROLLER="true" FOV="90" PAN="45" TILT="0" DRAGFRICTION="true" TEXT="" FONTSIZE="20" THUMBNAIL="/vr_engine/loading.jpg"');
    document.writeln('	src="quicktime/' + sFile + '"');
	for(i=3;i<arguments.length;i+=2) {
		document.writeln('  ' + arguments[i] + '="' + arguments[i+1] + '"');
	}
	document.writeln('	/></div>');

}
