﻿//
//  DevalVR + QuickTime + PTviewer + Flash + Spi-v  Javascript workaround
//     Author: fiero http://www.devalvr.com
//  Version: 1.2.5
//
//     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">
//          writecode("fileForQT.mov","fileForDevalVR.mov","fileForJava.jpg","fileForFlash.swf","fileForSPIV.jpg","100%","94%");
//     </SCRIPT>
//
//
//     NOTE: To use Spi-v viewer, place "SPi-V.dcr" file in same folder that HTML file, 
//        you can find it here: http://www.fieldofview.com
//     
//      IMPORTANT: Use this file at your own risk
//

var minQTVersion = "5.0.0";               // minimal required version checked for QuickTime
var minDevalVRVersion = "0,5,0,0";  // minimal required version checked for DevalVR
var minFlashVersion = "9.0.0";          // minimal required version checked for Flash
var minShockwaveVersion = "10.1";     // minimal required version checked for Shockwave

var pluginPriority_QuickTime=2;          // Set the order of Priority to use in each plugin 
var pluginPriority_DevalVR=1;          // when Autodetect option is selected. Change 
var pluginPriority_Flash=4;               // the number or priority for each plugin
var pluginPriority_Java=5;
var pluginPriority_Spiv=6;
var pluginPriority_PangeaVR=3;

var enableSizeLimits=0;                    // 0: disable  1: enable  (size limits for QT, DevalVR and Spi-v)
var enableSizeLimitsJava=0;               // 0: disable  1: enable  (size limits for Java)
var enableSizeLimitsFlash=0;          // 0: disable  1: enable  (size limits for Flash)
var maxViewerWidth="1280";
var maxViewerHeight="1024";
var maxViewerWidthJava="900";
var maxViewerHeightJava="700";
var maxViewerWidthFlash="900";
var maxViewerHeightFlash="700";

var enableSizeRatio=0;                    // 0: disable size ratio    1: enable size ratio
var sizeRatio=6/3;                         // maximum aspect ratio, horizontal/vertical proportions

var enableLineUnderPanorama=0;          //Enable an adviser line under panorama
var writeLineUnderQuickTime="";
var writeLineUnderDevalVR="";
var writeLineUnderJava="<font face='Verdana' size='1' color='#cdcdcd'> Install the DevalVR plugin for an optimal viewing experience <a href='http://www.devalvr.com/install/'>click here to install</a>, and <a href='javascript:reloadPage()'>click here after installing</a></font>";
var writeLineUnderFlash="<font face='Verdana' size='1' color='#cdcdcd'> Install the DevalVR plugin for an optimal viewing experience <a href='http://www.devalvr.com/install/'>click here to install</a>, and <a href='javascript:reloadPage()'>click here after installing</a></font>";
var writeLineUnderSpiV="";
var writeLineUnderPangeaVR="";

var installfont="<font face='Verdana' size='2' color='#FFFFFF'>";
var selectedlinkcolor="#333333";
var selectedlinkbgcolor="#AAAAFF";

var usePurePlayer=0;                              //0: PTViewer is used as Java player  1: PurePlayer is used (write correct names below)
var archivePurePlayer='PurePlayer.jar';          //Copy this file in the same folder
var codePurePlayer='PurePlayer';

var detectvr_replacepage=0;          // 1 to use window.location.replace() function to open a new page for each viewer (if 1 then writecode parameters must be the name of HTML pages)

/////////////////////////////////////////////////////////////////////////////////////////////////

var isOpera=(navigator.userAgent.indexOf('Opera')!=-1);
var isIE=((navigator.appVersion.indexOf("MSIE") != -1) && !isOpera);
var isDOM=document.getElementById?1:0;
var isNS4=navigator.appName=='Netscape'&&!isDOM?1:0;
var isIE4=isIE&&!isDOM?1:0;
var isWindows=(navigator.platform.indexOf('Win')!=-1);
var isMac=(navigator.platform.indexOf('Mac')!=-1 || navigator.platform.indexOf('PowerPC')!=-1);
var favoriteViewer=getCookie("panorama_viewer");
if(!favoriteViewer) favoriteViewer="DETECT";  //DEVALVR , QT, FLASH, JAVA, SPIV, PANGEAVR, or DETECT
var detectableWithVB = false;
var adviselineunderpano="";
var orgsizepluginx=new Array();
var orgsizepluginy=new Array();
var numberofplugins=0;
var sizepluginx;
var sizepluginy;
var writePluginVR=0;
var writeInstallPluginVR=0;
var reloadpagewhenchangeviewer=0;
var auxparameters=new Array();
auxparameters['devalvr']=new Array();
auxparameters['qt']=new Array();
auxparameters['java']=new Array();
auxparameters['flash']=new Array();
auxparameters['spiv']=new Array();


//Use 'viewerparameters' function to define different parameters for each viewer
//Use "devalvr", "qt", "java", "flash", "spiv" or "pangeavr" in first parameter
//for example: viewerparameters("devalvr","resize","0","autoplay","3");

function viewerparameters(viewer)
{
     auxparameters[viewer]=new Array();
     for(var i=1;i<arguments.length;i++) 
     {
          auxparameters[viewer][i-1]=arguments[i];
     }
}

function writecode(qtfile, devalvrfile, javafile, flashfile, spivfile, sizex, sizey)
{
     writecode2(qtfile, qtfile, devalvrfile, javafile, flashfile, spivfile, sizex, sizey);
}

function writecode2(qtfile, pangeafile, devalvrfile, javafile, flashfile, spivfile, sizex, sizey)
{
     var priority=new Array();
     var existfile=new Array();
     writePluginVR=0;
     writeInstallPluginVR=0;
     
     existfile[1]=(devalvrfile!=null && devalvrfile!="");
     existfile[2]=(qtfile!=null && qtfile!="");
     existfile[3]=(flashfile!=null && flashfile!="");
     existfile[4]=(javafile!=null && javafile!="");
     existfile[5]=(spivfile!=null && spivfile!="");
     existfile[6]=(pangeafile!=null && pangeafile!="");
     
     if((favoriteViewer=="DEVALVR" && (!existfile[1] || !isWindows))
     || (favoriteViewer=="QT" && !existfile[2])
     || (favoriteViewer=="JAVA" && !existfile[4]) 
     || (favoriteViewer=="FLASH" && !existfile[3]) 
     || (favoriteViewer=="SPIV" && !existfile[5])
     || (favoriteViewer=="PANGEAVR" && !existfile[6]))
          favoriteViewer="DETECT";
     
     priority[1]=pluginPriority_DevalVR;
     priority[2]=pluginPriority_QuickTime;
     priority[3]=pluginPriority_Flash;
     priority[4]=pluginPriority_Java;
     priority[5]=pluginPriority_Spiv;
     priority[6]=pluginPriority_PangeaVR;
     
     if(favoriteViewer=="DETECT")
     {
          for(order=1;order<=6 && writePluginVR==0;order++)
          {
               for(n=1;n<=6;n++)
               {
                    if(priority[n]==order && existfile[n] && IsPluginInstalled(n))
                    {
                         writePluginVR=n;
                         break;
                    }
               }
          }
     }
     else if(favoriteViewer=="DEVALVR" && isWindows)
     {
          if(IsPluginInstalled(1)) writePluginVR=1;
          else writeInstallPluginVR=1;
     }
     else if(favoriteViewer=="QT" && (isWindows || isMac))
     {
          if(IsPluginInstalled(2)) writePluginVR=2;
          else writeInstallPluginVR=2;
     }
     else if(favoriteViewer=="FLASH")
     {
          if(IsPluginInstalled(3)) writePluginVR=3;
          else writeInstallPluginVR=3;
     }
     else if(favoriteViewer=="JAVA") 
     {
          if(IsPluginInstalled(4)) writePluginVR=4;
          else writeInstallPluginVR=4;
     }
     else if(favoriteViewer=="SPIV" && (isWindows || isMac)) 
     {
          if(IsPluginInstalled(5)) writePluginVR=5;
          else writeInstallPluginVR=5;
     }
     else if(favoriteViewer=="PANGEAVR" && isMac) 
     {
          if(IsPluginInstalled(6)) writePluginVR=6;
          else writeInstallPluginVR=6;
     }
     
     if(writeInstallPluginVR==0 && writePluginVR==0)
     {
          if(isWindows) writeInstallPluginVR=1;     //Install DevalVR if there is not any plugin (fastest installation)
          else if(isMac) writeInstallPluginVR=2;     //Install QT always in Mac
          else writeInstallPluginVR=4;               //Install Java always in Linux
     } 
     
     adviselineunderpano="";
     if(enableLineUnderPanorama)
     {
          if(writePluginVR==1 && writeLineUnderDevalVR!="") adviselineunderpano=writeLineUnderDevalVR;
          else if(writePluginVR==2 && writeLineUnderQuickTime!="") adviselineunderpano=writeLineUnderQuickTime;
          else if(writePluginVR==3 && writeLineUnderFlash!="") adviselineunderpano=writeLineUnderFlash;
          else if(writePluginVR==4 && writeLineUnderJava!="") adviselineunderpano=writeLineUnderJava;
          else if(writePluginVR==5 && writeLineUnderSpiV!="") adviselineunderpano=writeLineUnderSpiV;
          else if(writePluginVR==6 && writeLineUnderPangeaVR!="") adviselineunderpano=writeLineUnderPangeaVR;
     }

     if(sizex=="") sizex="100%";
     if(sizey=="") sizey="94%";

     orgsizepluginx[numberofplugins]=sizex;
     orgsizepluginy[numberofplugins]=sizey;
     
     CalcLimits(sizex,sizey);
     sizex=sizepluginx;
     sizey=sizepluginy;

     idpano='PANORAMAID';
     if(numberofplugins>0) idpano+=numberofplugins;
     numberofplugins++;
     
     if(writePluginVR==1)
     {
          if(detectvr_replacepage) window.location.replace(devalvrfile); 
          else detecvr_embedPlugin('devalvr',devalvrfile,sizex,sizey,idpano,'5D2CF9D0-113A-476B-986F-288B54571614','http://www.devalvr.com/instalacion/plugin/devalocx.cab#version='+minDevalVRVersion,'application/x-devalvrx','http://www.devalvr.com/installation/','filter','0');
     }
     else if(writePluginVR==2)
     {
          if(detectvr_replacepage) window.location.replace(qtfile); 
          else detecvr_embedPlugin('qt',qtfile,sizex,sizey,idpano,'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B','http://www.apple.com/qtactivex/qtplugin.cab','video/quicktime','http://www.apple.com/quicktime/download/','scale','tofit','autostart','true','kioskmode','true','controller', 'true', 'enablejavascript', 'true');
     }
     else if(writePluginVR==3)
     {
          if(detectvr_replacepage) window.location.replace(flashfile); 
          else detecvr_embedPlugin('flash',flashfile,sizex,sizey,idpano,'D27CDB6E-AE6D-11cf-96B8-444553540000','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab','application/x-shockwave-flash','http://www.macromedia.com/go/getflashplayer','bgcolor', '#f0f0f0', 'play', 'true', 'cache','true', 'autoplay','true','allowScriptAccess','always','allowFullScreen', 'true');
     }
     else if(writePluginVR==4)
     {
          if(detectvr_replacepage) window.location.replace(javafile); 
          else 
          {
               if(usePurePlayer==0) detecvr_embedPlugin('java','',sizex,sizey,idpano,'','','','','code','ptviewer.class','archive','ptviewer.jar','file',javafile,'fov','120','cursor','MOVE','showToolbar','true','imgLoadFeedback','false');
               else detecvr_embedPlugin('java','',sizex,sizey,idpano,'','','','','code',codePurePlayer,'archive',archivePurePlayer,'panorama',javafile,'optimizememory','true');
          }
     }
     else if(writePluginVR==5)
     {
          if(detectvr_replacepage) window.location.replace(spivfile); 
          else detecvr_embedPlugin('spiv','SPi-V.dcr',sizex,sizey,idpano,'166B1BCA-3F9C-11CF-8075-444553540000','http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version='+minShockwaveVersion,'application/x-director','http://www.macromedia.com/shockwave/download/','swURL',spivfile,'swStretchStyle','stage','swRemote','swContextMenu=\'TRUE\'','progress','true','logo','false');
     }
     else if(writePluginVR==6)
     {
          if(detectvr_replacepage) window.location.replace(pangeafile); 
          else detecvr_embedPlugin('pangeavr',pangeafile,sizex,sizey,idpano,'','','graphics/pangeavr2','http://www.pangeasoft.net/pano/plugin/downloads.html','maxtilt','0','mintilt','0','maxfov','0','minfov','0');
     }
     else if(writeInstallPluginVR==1)
     {
          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, it only takes a few seconds)</a>';
          str+='</td></tr></table></div>';
          
          document.writeln(str);
          setTimeout("CheckPluginInstallation()",10000);
     }
     else
     {
          var pluginname,pluginurl;
          
          if(writeInstallPluginVR==2) 
          {
               pluginname="QuickTime Player"
               pluginurl="http://www.apple.com/quicktime/download/"
          }
          else if(writeInstallPluginVR==3) 
          {
               pluginname="Adobe Flash Player Version " + minFlashVersion + " or higher."
               pluginurl="http://www.adobe.com/go/getflash/"
          }
          else if(writeInstallPluginVR==4) 
          {
               pluginname="Java Software"
               pluginurl="http://java.com/en/download/"
          }
          else if(writeInstallPluginVR==5) 
          {
               pluginname="Shockwave Player"
               pluginurl="http://www.macromedia.com/shockwave/download"
          }
          else if(writeInstallPluginVR==6) 
          {
               pluginname="PangeaVR Player"
               pluginurl="http://www.pangeasoft.net/pano/plugin/downloads.html"
          }
          
          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+=installfont+'This content requires '+ pluginname +'.';
          str+='<br /><br /><a href="'+ pluginurl +'" target="_blank">click here to install '+ pluginname +'</a>';
          str+='</font></td></tr></table></div>';
          document.writeln(str);
     }

     if(writeInstallPluginVR==0)
     {
          window.onresize=OnResizeWindow;
          if(isWindows && isIE) 
               setTimeout("OnResizeWindow()",2000);
     }
}

function ShowViewerSelection(options)
{
     var optionviewer=new Array("DETECT","DEVALVR","QT","FLASH","JAVA","SPIV","PANGEAVR");
     var textviewer=new Array("Auto","DevalVR","QuickTime","Flash","Java","Spi-V","PangeaVR");
     var osviewer=new Array(0,1,0,0,0,0,2);     //0:All  1:Windows  2:Mac

     options=options.toUpperCase();
     reloadpagewhenchangeviewer=(options.indexOf("RELOAD")!=-1);
     var vertical='';
     var str='';

     var combobox=(options.indexOf("COMBOBOX")!=-1);
     var links=(options.indexOf("LINKS")!=-1);

     if(options.indexOf("HORIZONTAL")==-1)
          vertical='<br />';
     
     viewer=getCookie("panorama_viewer");
     if(!viewer) viewer="DETECT";

     if(combobox)
     {
          str+='<select id="comboboxViewer" style="WIDTH: 160px" width=160 name="comboboxViewer" onchange="favoriteViewerChangedCombo()">';
     }
     for(n=0;n<7;n++)
     {
          if(options.indexOf(optionviewer[n])!=-1 && (osviewer[n]==0 || (osviewer[n]==1 && isWindows) || (osviewer[n]==2 && isMac)))
          {
               if(combobox) str+='<option value="'+optionviewer[n]+'" '+(viewer==optionviewer[n]?'selected="selected"':'')+'> '+textviewer[n]+'</option>';
               else if(links) str+='<a hRef="javascript:changeFavoriteViewer(\''+optionviewer[n]+'\');">'+(viewer==optionviewer[n]?('<font style="BACKGROUND-COLOR: '+selectedlinkbgcolor+'" color='+selectedlinkcolor+'>&nbsp;'):'')+textviewer[n]+(viewer==optionviewer[n]?'&nbsp;</font>':'')+'&nbsp;</a> '+vertical;
               else str+='<input id="radioViewer" value='+n+' type=radio name="radioViewer" OnClick="javascript:changeFavoriteViewer(\''+optionviewer[n]+'\');" '+(viewer==optionviewer[n]?'checked="checked"':'')+' />'+textviewer[n]+' '+vertical;
          }
     }
     if(combobox)
     {
          str+='</select><br />';
     }
     else if(vertical=='') str+='<br />';

     document.writeln('<font id="IDVIEWEROPTIONS">&nbsp;</font>');
     ref=getRef("IDVIEWEROPTIONS");
     if(ref)     ref.innerHTML=str;
}

function favoriteViewerChangedCombo()
{
     ref=getRef("comboboxViewer");
     if(ref) changeFavoriteViewer(ref.value);
}

function changeFavoriteViewer(viewer)
{
     if(favoriteViewer!=viewer)
     {
          setCookie("panorama_viewer",viewer);
          if(reloadpagewhenchangeviewer)
               window.location.reload();
     }
}

//Old version, it exist for compatibility with old pages
function writevrcode(movfile,javafile,flashfile,spivfile,width,height)
{
     var sizex=0,sizey=0;
     
     //Compatibility code, old versions of writevrcode only was 
     //qtfile and javafile parameters: writevrcode(movfile,javafile,width,height)
     
     var paramsize=2;
     for(var n=2;n<4;n++)
     {
          if(arguments[n]!=null)
          {
               var str=arguments[n].toString();
               str.toLowerCase();
               if(n==2)
               {
                    if(str.indexOf(".swf")!=-1 || str=="") paramsize++;
                    else flashfile="";
               }
               else if(n==3)
               {
                    if(str.indexOf(".spv")!=-1 || str.indexOf(".xml")!=-1 || str.indexOf(".jpg")!=-1 || str=="")
                    {
                         if(paramsize==2) paramsize++;
                         paramsize++;
                    }
                    else spivfile="";
               }
          }
     }
     if(arguments[paramsize]!=null)
          sizex=arguments[paramsize];
     if(arguments[paramsize+1]!=null)
          sizey=arguments[paramsize+1];
     
     var qtfile=movfile;     
     if(movfile.toLowerCase().indexOf(".mov")==-1)
          qtfile="";

     writecode(qtfile,movfile,javafile,flashfile,spivfile,sizex,sizey);
}

function CheckPluginInstallation()
{
     if(!isIE) navigator.plugins.refresh(true);

     if(IsPluginInstalled(1))
     {
          reloadPage();
     }
     else setTimeout("CheckPluginInstallation()",3000);
}

function IsPluginInstalled(numplugin)
{
     var installed=0;
     
     if(isWindows && isIE)
     {
          if(detectableWithVB)
          {
               if(numplugin==1)
               {
                    installed=detectActiveXControl('DevalVRXCtrl.DevalVRXCtrl.1');
               }
               else if(numplugin==2)
               {
                    installed=detectQuickTimeActiveXControl();
               }
               else if(numplugin==3)
               {
                    installed =DetectFlashVer(); 
               }
               else if(numplugin==4)
               {
                    installed=detectActiveXControl('JavaPlugin') && navigator.javaEnabled();
               }
               else if(numplugin==5)
               {
                    var strswversion=minShockwaveVersion.split(".");
                    var strshockwave="";
                    do{
                         strshockwave="SWCtl.SWCtl."+strswversion[0]+"."+strswversion[1]+".1";
                         strswversion[1]++;
                         if(strswversion[1]>9)
                         {
                              strswversion[1]=0;
                              strswversion[0]++;
                         }
                         installed=detectActiveXControl(strshockwave);
                    }while(installed==0 && strswversion[0]<20);
               }
          }
     }
     else
     {
          if(numplugin==1)
          {
               if(navigator.mimeTypes && navigator.mimeTypes["application/x-devalvrx"] && (isOpera || navigator.mimeTypes["application/x-devalvrx"].enabledPlugin))
               {
                    var words = navigator.plugins["DevalVR 3D Plugin"].description.split(" ");
                    var version = words[3].split(",");
                    var min = minDevalVRVersion.split(",");
                    installed=checkMinVersion(version,min,4);
               }     
          }
          else if(numplugin==2)
          {
               if(isMac) 
               {
                    installed=1;
               }
               else
               {
                    if(navigator.mimeTypes && navigator.mimeTypes["video/quicktime"] && (isOpera || navigator.mimeTypes["video/quicktime"].enabledPlugin))
                    {
                         for (var i = 0; i < navigator.plugins.length; i++)
                         {
                              if(navigator.plugins[i].name.indexOf("QuickTime Plug-in")!=-1)
                              {
                                   var words = navigator.plugins[i].name.split(" ");
                                   if (words.length<3) installed=1;
                                   else
                                   {
                                        var version = words[2].split(".");
                                        var min = minQTVersion.split(".");
                                        installed=checkMinVersion(version,min,version.length);
                                   }
                                   break;
                              }
                         }
                    }
               }
          }
          else if(numplugin==3)
          {
               installed = DetectFlashVer(); 
          }
          else if(numplugin==4)
          {
               if (isOpera || (navigator.mimeTypes && navigator.mimeTypes['application/x-java-applet'] && navigator.mimeTypes["application/x-java-applet"].enabledPlugin))
               {
                    installed=navigator.javaEnabled();
               }
          }
          else if(numplugin==5)
          {
               if(navigator.mimeTypes && navigator.mimeTypes["application/x-director"] && (isOpera || navigator.mimeTypes["application/x-director"].enabledPlugin))
               {
                    var description=navigator.plugins["Shockwave for Director"].description;
                    var pos=description.indexOf("version");
                    if (pos!=-1)
                    {
                         var words=description.substr(pos+8);
                         var version = words.split(".");
                         var min = minShockwaveVersion.split(".");
                         installed=checkMinVersion(version,min,2);
                    }
               }
          }
          else if(numplugin==6)
          {
               if(navigator.mimeTypes && navigator.mimeTypes["graphics/pangeavr2"] && (isOpera || navigator.mimeTypes["graphics/pangeavr2"].enabledPlugin))
               {
                    installed=1;
               }
          }
     }
     return installed;
}

function OnResizeWindow()
{
     for(n=0;n<numberofplugins;n++)
     {
          CalcLimits(orgsizepluginx[n],orgsizepluginy[n]);

          if(n==0) ref=getRef("PANORAMAID");
          else ref=getRef("PANORAMAID"+n);
          if(ref!=null)
          {
               if(isIE || isOpera)
               {
                    ref.style.width=sizepluginx;
                    ref.style.height=sizepluginy;
               }
               else
               {     
                    ref.width=sizepluginx;
                    ref.height=sizepluginy;
               }
          }
     }
}

function checkMinVersion(version,min,num)
{
     var installed=0;
     for (var i = 0; i < num; i++)
     {
          if(parseInt(version[i])>parseInt(min[i])) 
          {
               installed=1;
               break;
          }
          else if(parseInt(version[i])<parseInt(min[i]))
          {
               break;
          }
          else if(parseInt(version[i])==parseInt(min[i]) && i==num-1)
               installed=1;
     }
     return installed;
}

function CalcLimits(sizex, sizey)
{
     var sizew,sizeh,limits;
     
     if(writePluginVR==4)
     {
          maxx=maxViewerWidthJava;
          maxy=maxViewerHeightJava;
          limits=enableSizeLimitsJava;
     }
     else if(writePluginVR==3)
     {
          maxx=maxViewerWidthFlash;
          maxy=maxViewerHeightFlash;
          limits=enableSizeLimitsFlash;
     }
     else
     {
          maxx=maxViewerWidth;
          maxy=maxViewerHeight;
          limits=enableSizeLimits;
     }

     if(sizex<0) sizex=getPageWidth()+parseInt(sizex);
     if(sizey<0) sizey=getPageHeight()+parseInt(sizey);
     
     if(limits || enableSizeRatio || adviselineunderpano!="")
     {
          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;
          }
     
          sizex=parseInt(sizex);
          sizey=parseInt(sizey);

          if(limits)
          {
               if(sizex>maxx) sizex=maxx;
               if(sizey>maxy) sizey=maxy;
          }     
          if(enableSizeRatio)
          {
               x=sizey*sizeRatio;
               if(x<sizex)
               {
                    sizex=x;
                    if(limits && sizex>maxx) sizex=maxx;
               }
          }
          if(adviselineunderpano!="")
          {
               sizey-=16;
          }
     }

     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));
     }
     var str=name+"="+escape(value)+"; expires=" + expires.toGMTString();

     document.cookie=str;
}

function getPageHeight()
{
     var ret,margintop=16,marginbottom=16;
     
     if(isIE) ret=document.body.clientHeight-document.body.topMargin-document.body.bottomMargin;
     else 
     {
          if(document.body.attributes.topmargin)
               margintop=document.body.attributes.topmargin.value;
          if(document.body.attributes.bottommargin)
               marginbottom=document.body.attributes.bottommargin.value;
          ret=window.innerHeight-margintop-marginbottom;
     }
     return ret;
}

function getPageWidth()
{
     var ret,marginleft=16,marginright=16;
     
     if(isIE) ret=document.body.clientWidth-document.body.leftMargin-document.body.rightMargin;
     else
     {
          if(document.body.attributes.leftmargin)
               marginleft=document.body.attributes.leftmargin.value;
          if(document.body.attributes.rightmargin)
               marginright=document.body.attributes.rightmargin.value;
          ret=window.innerWidth-marginleft-marginright;
     }
     return ret;
}

function IEGetSwfVer()
{
     flashVer=0;
          
     for(i=25;i>0 && flashVer==0;i--)
     {
          flashVer=VBGetSwfVer(i);
     }
     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;
}
 
function DetectFlashVer() 
{
       if (isIE && isWindows && !isOpera) {
          versionStr = IEGetSwfVer();
     } else {
          versionStr = JSGetSwfVer();          
     }
     if (versionStr != 0 && versionStr != -1) 
     {
          if(isIE && isWindows && !isOpera) {
               tempArray         = versionStr.split(" ");
               tempString        = tempArray[1];
               versionArray      = tempString .split(",");                    
          } 
          else 
          {
               versionArray      = versionStr.split(".");
          }
          var min=minFlashVersion.split(".");
          return checkMinVersion(versionArray,min,3);
     }
     else return false;
}

function writeParameters(parameters, auxparameters, IEparameters)
{
     str ='';
     for(i=0;i<auxparameters.length;i+=2) 
     {
          if(IEparameters)
               str+='  <param name="' + auxparameters[i] + '" value="' + auxparameters[i+1] + '" />';
          else
               str+=' ' + auxparameters[i] + '="' + auxparameters[i+1] + '"';
     }
     for(i=9;i<parameters.length;i+=2) 
     {
          var exists=0;
          for(j=0;j<auxparameters.length;j+=2) {
               if(auxparameters[j]==parameters[i]) exists=1;
          }
          if(exists==0)
          {
               if(IEparameters)
                    str+='  <param name="' + parameters[i] + '" value="' + parameters[i+1] + '" />';
               else
                    str+=' '+ parameters[i] + '="' + parameters[i+1] + '"';
          }
     }
     return str;
}

function detecvr_embedPlugin(plugin,sFile,sWidth,sHeight,id,classid,codebase,type,pluginspage)
{
     str='<div align=center>';
     if(classid!='' || plugin=='java')
     {
          if(plugin=='java') str+='<applet ';
          else str+='<object classid="clsid:'+classid+'" codebase="'+codebase+'"';
          str+=' id="'+id+'" style="WIDTH: ' + sWidth + '; HEIGHT: ' + sHeight + '" width="' + sWidth + '" height="' + sHeight + '" >';
     
          if(plugin!='java') str+='  <param name="src" value="' + sFile + '" />';
     
          str+=writeParameters(arguments,auxparameters[plugin],1);
     }
     if(type!='')
     {
          str+='<embed id="'+id+'" name="'+id+'" width="' + sWidth + '" height="' + sHeight + '"';
          str+='     pluginspage="'+pluginspage+'"';
          str+='     type="'+type+'"';
          str+='     src="' + sFile + '"';
          str+=writeParameters(arguments,auxparameters[plugin],0);
          str+='     />';
     }
     if(classid!='') str+='</object>';
     if(plugin=='java') str+='</applet>';
     
     if(adviselineunderpano!="")
     {
          if(sWidth!="100%") str+='<br />';
          str+=adviselineunderpano;
     }
     str+='</div>';
     document.writeln(str);
}

// Here we write out the VBScript block for MSIE Windows
if (isWindows && isIE) 
{
    str='<script language="VBscript" type="text/vbscript">';
     
    str+='detectableWithVB = False \n';
    str+='If ScriptEngineMajorVersion >= 2 then \n';
    str+='  detectableWithVB = True \n';
    str+='End If \n';

    str+='Function detectActiveXControl(activeXControlName) \n';
    str+='  on error resume next \n';
    str+='  detectActiveXControl = False \n';
    str+='  If detectableWithVB Then \n';
    str+='          set pControl = CreateObject(activeXControlName) \n';
    str+='          If (IsObject(pControl)) then \n';
    str+='               detectActiveXControl = True \n';
    str+='          End If \n';
    str+='  End If \n';
    str+='End Function \n';

    str+='Function detectQuickTimeActiveXControl() \n';
    str+='  on error resume next \n';
    str+='  detectQuickTimeActiveXControl = False \n';
    str+='  If detectableWithVB Then \n';
    str+='    detectQuickTimeActiveXControl = False \n';
    str+='    hasQuickTimeChecker = false \n';
    str+='    Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1") \n';
    str+='    If IsObject(hasQuickTimeChecker) Then \n';
    str+='      If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then  \n';
    str+='        detectQuickTimeActiveXControl = True \n';
    str+='      End If \n';
    str+='    End If \n';
    str+='  End If \n';
    str+='End Function \n';

    str+='Function VBGetSwfVer(i) \n';
    str+='  on error resume next \n';
    str+='  Dim swControl, swVersion \n';
    str+='  swVersion = 0 \n';
    str+='  If detectableWithVB Then \n';
    str+='          set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i)) \n';
    str+='          If (IsObject(swControl)) then \n';
    str+='               swVersion = swControl.GetVariable("$version") \n';
    str+='          End If \n';
    str+='  End If \n';
    str+='  VBGetSwfVer = swVersion \n';
    str+='End Function \n';
    str+='</scr' + 'ipt>';
    
    document.writeln(str);
}


//////////////// Special functions to create dynamic pages
function getQueryVariable(variable) 
{
     var query = window.location.search.substring(1);
     var vars = query.split("&");
     for (var i=0;i< vars.length;i++) 
     {
          var pair = vars[i].split("=");
          if (pair[0] == variable) 
          {
               return pair[1];
          }
     } 
     return -1;
}     

function getRef(id) 
{
     return (isDOM ? document.getElementById(id) : (isIE4 ? document.all[id] : document.layers[id]));
}
function getStyle(id) 
{
     return (isNS4 ? getRef(id) : getRef(id).style);
}

var panoramadata=new Array();
var panoramanumdata=0;

function insertpanoramadata(name, panofile, title, description, date, jpgimage)
{
     var pano="pano"+panoramanumdata;
     panoramadata[pano]=name;
     panoramadata[name]=new Array();
     panoramadata[name]["movfile"]=panofile;
     panoramadata[name]["title"]=title;
     panoramadata[name]["description"]=description;
     panoramadata[name]["date"]=date;
     panoramadata[name]["jpgimage"]=jpgimage;
     
     panoramanumdata++;
}

///////////////////

