
var minQTVersion = "5.0.0";			//sets minimal version checked for QuickTime
var minDevalVRVersion = "0,3,3,0";  //sets minimal version checked for DevalVR
var makeDevalVRdefault =1;			//Sets DevalVR as default when QT and DevalVR are installed and "Detect" mode is selected
var enableSizeLimits=0;				//0: disable limits    1: enable limits
var enableSizeRatio=0;				//0: disable ratio    1: enable ratio
var sizeRatio=6/3;					//aspect ratio, horizontal/vertical proportions
var maxViewerWidth=1280;
var maxViewerHeight=1024;
var maxViewerWidthJava=900;
var maxViewerHeightJava=500;

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

var isOp=(navigator.userAgent.indexOf('Opera')!=-1);
var isIE=(document.all!=null && !isOp);
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 favoriteViewer=getCookie("panorama_viewer");
if(!favoriteViewer) favoriteViewer="DETECT";  //DEVALVR , QT, JAVA, or DETECT
var orgsizepluginx,orgsizepluginy;
var sizepluginx;
var sizepluginy;
var writeDevalVR=0;
var writeQT=0;
var writeJAVA=0;
var writeInstall=0;

function writevrcode(movfile,javafile,sizex,sizey)
{
	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;
				}
			}catch(e){}
			try
			{
				objQuickTime=new ActiveXObject('QuickTimeCheckObject.QuickTimeCheck.1');
				if (objQuickTime)
				{
					if(objQuickTime.IsQuickTimeAvailable(0))
					{
						pluginQTInstalled=1;
					}
				}
			}catch(e){}
		}
		
	}
	
	var str='';
	writeDevalVR=0;
	writeQT=0;
	writeJAVA=0;
	writeInstall=0;
	
	if(isWindows)
	{
		if(favoriteViewer=="DETECT" || (favoriteViewer=="JAVA" && !javafile))
		{
			if(pluginDevalVRInstalled && pluginQTInstalled)
			{
				if(makeDevalVRdefault) writeDevalVR=1; 
				else writeQT=1;
			}
			else if(pluginDevalVRInstalled) writeDevalVR=1; 
			else if(pluginQTInstalled) writeQT=1;
			else if(javaInstalled && javafile) writeJAVA=1;
			else writeInstall=1;
		}
		else if(favoriteViewer=="DEVALVR")
		{
			if(pluginDevalVRInstalled) writeDevalVR=1;
			else writeInstall=1;
		}
		else if(favoriteViewer=="QT") writeQT=1;
		else if(favoriteViewer=="JAVA") writeJAVA=1;
	}
	else if(isMac) 
	{
		if(favoriteViewer=="JAVA") writeJAVA=1;
		else writeQT=1;	//Use QT always in Mac computers
	}
	else writeJAVA=1;	//Use Java always in Linux
	
	if(!sizex) sizex="100%";
	if(!sizey) sizey="94%";

	orgsizepluginx=sizex;
	orgsizepluginy=sizey;
	
	CalcLimits(sizex,sizey);
	sizex=sizepluginx;
	sizey=sizepluginy;
	
	if(writeDevalVR)
	{
		str='<DIV align=center><OBJECT id="PANORAMAID" codeBase="http://www.devalvr.com/instalacion/plugin/devalocx.cab#version='+minDevalVRVersion+'" classid=clsid:5D2CF9D0-113A-476B-986F-288B54571614 style="WIDTH: '+sizex+'; HEIGHT: '+sizey+'" width="'+sizex+'" height="'+sizey+'">';
		str+='<PARAM NAME="src" VALUE="'+movfile+'">';
		str+='<PARAM NAME="filter" VALUE="0">';
		str+='<EMBED name="PANORAMAID" TYPE="application/x-devalvrx" PLUGINSPAGE="http://www.devalvr.com/instalacion/plugin/install.html" src="'+movfile+'" filter="0" width="'+sizex+'" height="'+sizey+'"></EMBED></OBJECT></DIV>';
	}
	else if(writeQT)
	{
		str='<DIV align=center><OBJECT id="PANORAMAID" codeBase=http://www.apple.com/qtactivex/qtplugin.cab classid=clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B  style="WIDTH: '+sizex+'; HEIGHT: '+sizey+'" width="'+sizex+'" height="'+sizey+'">';
		str+='<PARAM NAME="src" VALUE="'+movfile+'">';
		str+='<PARAM NAME="autostart" VALUE="true">';
		str+='<PARAM NAME="autoplay" VALUE="false">';
		str+='<PARAM NAME="scale" VALUE="tofit">';
		str+='<PARAM NAME="kioskmode" VALUE="true">';
		str+='<PARAM NAME="loop" VALUE="false">';
		str+='<PARAM NAME="controller" VALUE="true">';
		str+='<embed name="PANORAMAID" src="'+movfile+'" width="'+sizex+'" height="'+sizey+'" scale="tofit" autostart="true" autoplay="false" kioskmode="true" type="video/quicktime" loop="false" controller="true" pluginspage="http://www.apple.com/quicktime/download/indext.html"></embed></OBJECT></DIV>';
	}
	else if(writeJAVA)
	{
		str='<DIV align=center><applet name="PANORAMAID" code="PurePlayer" archive="PurePlayer.jar" width='+sizex+' height='+sizey+'>';
		str+='<param name=panorama value="'+javafile+'">';
		str+='<param name=fov value="90">';
		str+='<param name=cursor value="MOVE">';
		str+='<param name=showToolbar value="true">';
		str+='<param name=imgLoadFeedback value="false">';
		str+='</applet></DIV>';
	}
	else if(writeInstall)
	{
		str='<P align=center>';
		str+='<A href="http://www.devalvr.com/install/"> Install DevalVR plugin </A></P>';
		str+='<P align=center>';
		str+='<A href="javascript:reloadPage()">click here after installing</A></P>';
	}
	document.write(str);

	window.onresize=OnResizeWindow;
}

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

	if(isIE || isOp)
	{
		document.PANORAMAID.style.width=sizepluginx;
		document.PANORAMAID.style.height=sizepluginy;
	}
	else
	{	
		document.PANORAMAID.width=sizepluginx;
		document.PANORAMAID.height=sizepluginy;
	}
	
	if(writeJAVA) window.location.reload();
}

function CalcLimits(sizex, sizey)
{
	var sizew,sizeh;
	
	if(enableSizeLimits || enableSizeRatio)
	{
		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
	{
		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);window.location.reload()
}

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

	if(options.indexOf("detect")!=-1)
	{
		str+='<INPUT id=radioViewer type=radio name=radioViewer '+(viewer=="DETECT"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'DETECT\');">Detect plugin ';
		if(vertical) str+='<BR>';
	}
	if(options.indexOf("devalvr")!=-1)
	{
		str+='<INPUT type=radio name=radioViewer '+(viewer=="DEVALVR"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'DEVALVR\');">DevalVR ';
		if(vertical) str+='<BR>';
	}
	if(options.indexOf("qt")!=-1)
	{
		str+='<INPUT type=radio name=radioViewer '+(viewer=="QT"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'QT\');">QuickTime ';
		if(vertical) str+='<BR>';
	}
	if(options.indexOf("java")!=-1)
	{
		str+='<INPUT type=radio name=radioViewer '+(viewer=="JAVA"?'checked':'')+' OnClick="javascript:changeFavoriteViewer(\'JAVA\');">Java ';
		if(vertical) str+='<BR>';
	}
	if(!vertical) str+='<BR>';
	
	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;
}


