// // DevalVR + QuickTime + PTviewer + Flash + Spi-v Javascript workaround // Author: Armando Saenz (aka fiero) http://www.devalvr.com // Version: 1.1.8 // // p2q_... functions based on Thomas Rauscher's code: // Thomas Rauscher http://www.pano2qtvr.com // // // To embed a panorama just include these lines in your HTML file (change filenames): // // // // // // 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=3; // when Autodetect option is selected. Change var pluginPriority_Flash=1; // the number or priority for each plugin var pluginPriority_Java=5; var pluginPriority_Spiv=6; var pluginPriority_PangeaVR=4; 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=" Install the DevalVR plugin for an optimal viewing experience click here to install, and click here after installing"; var writeLineUnderFlash=" Install the DevalVR plugin for an optimal viewing experience click here to install, and click here after installing"; var writeLineUnderSpiV=""; var writeLineUnderPangeaVR=""; var installfont=""; 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.class'; 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;i0) idpano+=numberofplugins; numberofplugins++; if(writePluginVR==1) { if(detectvr_replacepage) window.location.replace(devalvrfile); else p2q_EmbedDevalVR(devalvrfile,sizex,sizey,idpano,'filter','0'); } else if(writePluginVR==2) { if(detectvr_replacepage) window.location.replace(qtfile); else p2q_EmbedQuicktime(qtfile,sizex,sizey,idpano,'scale','tofit','autostart','true','kioskmode','true','controller', 'true'); } else if(writePluginVR==3) { if(detectvr_replacepage) window.location.replace(flashfile); else p2q_EmbedFlash(flashfile,sizex,sizey,idpano,'bgcolor', '#f0f0f0', 'play', 'true', 'cache','true', 'autoplay','true','allowFullScreen','true'); } else if(writePluginVR==4) { if(detectvr_replacepage) window.location.replace(javafile); else { if(usePurePlayer==0) p2q_EmbedPtviewer(javafile,sizex,sizey,idpano,'fov','120','cursor','MOVE','showToolbar','true','imgLoadFeedback','false','pan','120'); else p2q_EmbedPurePlayer(javafile,sizex,sizey,idpano); } } else if(writePluginVR==5) { if(detectvr_replacepage) window.location.replace(spivfile); else p2q_EmbedSPiV(spivfile,sizex,sizey,idpano); } else if(writePluginVR==6) { if(detectvr_replacepage) window.location.replace(pangeafile); else p2q_EmbedPangea(pangeafile,sizex,sizey,idpano,'maxtilt','0','mintilt','0','maxfov','0','minfov','0'); } else if(writeInstallPluginVR==1) { var str='
'; str+='DevalVR plugin is required to see this content'; str+='

click here to install (250 KB, it only takes a few seconds)'; str+='

click here after installing to reload page'; str+='
'; document.writeln(str); } 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='
'; str+=installfont+'This content requires '+ pluginname +'.'; str+='

click here to install '+ pluginname +''; str+='
'; document.writeln(str); } if(writeInstallPluginVR==0) window.onresize=OnResizeWindow; } function ShowViewerSelection(options) { reloadpagewhenchangeviewer=(options.indexOf("reload")!=-1); options.toLowerCase(); var vertical=''; var combobox=(options.indexOf("combobox")!=-1); var str=''; if(options.indexOf("horizontal")==-1) vertical='
'; viewer=getCookie("panorama_viewer"); if(!viewer) viewer="DETECT"; if(combobox) { str+='Automatic detection'+vertical; } if(options.indexOf("devalvr")!=-1 && isWindows) { if(combobox) str+=''; else str+='DevalVR '+vertical; } if(options.indexOf("qt")!=-1) { if(combobox) str+=''; else str+='QuickTime '+vertical; } if(options.indexOf("flash")!=-1) { if(combobox) str+=''; else str+='Flash '+vertical; } if(options.indexOf("java")!=-1) { if(combobox) str+=''; else str+='Java '+vertical; } if(options.indexOf("spiv")!=-1 || options.indexOf("spi-v")!=-1) { if(combobox) str+=''; else str+='Spi-V '+vertical; } if(options.indexOf("pangeavr")!=-1 && isMac) { if(combobox) str+=''; else str+='PangeaVR '+vertical; } if(combobox) { str+='
'; } else if(vertical=='') str+='
'; document.writeln(' '); 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 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) { var flashVersion=minFlashVersion.split("."); installed =DetectFlashVer(parseInt(flashVersion[0]),parseInt(flashVersion[1]),parseInt(flashVersion[2])); } 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"] && 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"] && 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) { var flashVersion=minFlashVersion.split("."); installed = DetectFlashVer(parseInt(flashVersion[0]),parseInt(flashVersion[1]),parseInt(flashVersion[2])); } 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"] && 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"] && navigator.mimeTypes["graphics/pangeavr2"].enabledPlugin) { installed=1; } } } return installed; } function OnResizeWindow() { for(n=0;nparseInt(min[i])) { installed=1; break; } else if(parseInt(version[i])maxx) sizex=maxx; if(sizey>maxy) sizey=maxy; } if(enableSizeRatio) { x=sizey*sizeRatio; if(xmaxx) sizex=maxx; } } if(adviselineunderpano!="") { sizey-=16; } } /* if(limits || enableSizeRatio || adviselineunderpano!="") { 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=parseInt(sizex)+"%"; sizey=parseInt(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(inicio0 && 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; } // 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); } function writeParameters(parameters, auxparameters, IEparameters) { for(i=0;i'); else document.writeln(' ' + auxparameters[i] + '="' + auxparameters[i+1] + '"'); } for(i=4;i'); else document.writeln(' ' + parameters[i] + '="' + parameters[i+1] + '"'); } } } function p2q_EmbedQuicktime(sFile,sWidth,sHeight,sId) { document.writeln('
'); document.writeln(' '); writeParameters(arguments,auxparameters['qt'],1); document.writeln(''); document.writeln(''); if(adviselineunderpano!="") { if(sWidth!="100%") document.writeln('
'); document.writeln(adviselineunderpano); } document.writeln('
'); } function p2q_EmbedDevalVR(sFile,sWidth,sHeight,sId) { document.writeln('
'); document.writeln(' '); writeParameters(arguments,auxparameters['devalvr'],1); document.writeln(''); document.writeln(''); if(adviselineunderpano!="") { if(sWidth!="100%") document.writeln('
'); document.writeln(adviselineunderpano); } document.writeln('
'); } function p2q_EmbedFlash(sFile,sWidth,sHeight,sId) { document.writeln('
'); document.writeln(' '); writeParameters(arguments,auxparameters['flash'],1); document.writeln(''); document.writeln(''); if(adviselineunderpano!="") { if(sWidth!="100%") document.writeln('
'); document.writeln(adviselineunderpano); } document.writeln('
'); } function p2q_EmbedPtviewer(sFile,sWidth,sHeight,sId) { document.writeln('
'); document.writeln(' '); writeParameters(arguments,auxparameters['java'],1); document.writeln(''); if(adviselineunderpano!="") { if(sWidth!="100%") document.writeln('
'); document.writeln(adviselineunderpano); } document.writeln('
'); } function p2q_EmbedPurePlayer(sFile,sWidth,sHeight,sId) { document.writeln('
'); document.writeln(' '); document.writeln(' '); writeParameters(arguments,auxparameters['java'],1); document.writeln(''); if(adviselineunderpano!="") { if(sWidth!="100%") document.writeln('
'); document.writeln(adviselineunderpano); } document.writeln('
'); } function p2q_EmbedSPiV(sFile,sWidth,sHeight,sId) { document.writeln('
'); document.writeln(' '); document.writeln(' '); document.writeln(' '); document.writeln(' '); document.writeln(' '); document.writeln(' '); writeParameters(arguments,auxparameters['spiv'],1); document.writeln(''); document.writeln(''); if(adviselineunderpano!="") { if(sWidth!="100%") document.writeln('
'); document.writeln(adviselineunderpano); } document.writeln('
'); } function p2q_EmbedPangea(sFile,sWidth,sHeight,sId) { document.writeln('
'); if(adviselineunderpano!="") { if(sWidth!="100%") document.writeln('
'); document.writeln(adviselineunderpano); } document.writeln('
'); } // Here we write out the VBScript block for MSIE Windows if (isWindows && isIE) { document.writeln('