1// 2// DevalVR + QuickTime + PTviewer + Flash + Spi-v Javascript workaround 3// Author: fiero http://www.devalvr.com 4// Version: 1.2.4 5// 6// To embed a panorama just include these lines in your HTML file (change filenames): 7// 8// <SCRIPT type="text/javascript" src="detectvr.js"></SCRIPT> 9// <SCRIPT type="text/javascript"> 10// writecode("fileForQT.mov","fileForDevalVR.mov","fileForJava.jpg","fileForFlash.swf","fileForSPIV.jpg","100%","94%"); 11// </SCRIPT> 12// 13// 14// NOTE: To use Spi-v viewer, place "SPi-V.dcr" file in same folder that HTML file, 15// you can find it here: http://www.fieldofview.com 16// 17// IMPORTANT: Use this file at your own risk 18// 19 20var minQTVersion = "5.0.0"; // minimal required version checked for QuickTime 21var minDevalVRVersion = "0,5,0,0"; // minimal required version checked for DevalVR 22var minFlashVersion = "9.0.0"; // minimal required version checked for Flash 23var minShockwaveVersion = "10.1"; // minimal required version checked for Shockwave 24 25var pluginPriority_QuickTime=4; // Set the order of Priority to use in each plugin 26var pluginPriority_DevalVR=2; // when Autodetect option is selected. Change 27var pluginPriority_Flash=1; // the number or priority for each plugin 28var pluginPriority_Java=3; 29var pluginPriority_Spiv=5; 30var pluginPriority_PangeaVR=6; 31 32var enableSizeLimits=0; // 0: disable 1: enable (size limits for QT, DevalVR and Spi-v) 33var enableSizeLimitsJava=0; // 0: disable 1: enable (size limits for Java) 34var enableSizeLimitsFlash=0; // 0: disable 1: enable (size limits for Flash) 35var maxViewerWidth="1280"; 36var maxViewerHeight="1024"; 37var maxViewerWidthJava="900"; 38var maxViewerHeightJava="700"; 39var maxViewerWidthFlash="900"; 40var maxViewerHeightFlash="700"; 41 42var enableSizeRatio=0; // 0: disable size ratio 1: enable size ratio 43var sizeRatio=6/3; // maximum aspect ratio, horizontal/vertical proportions 44 45var enableLineUnderPanorama=0; //Enable an adviser line under panorama 46var writeLineUnderQuickTime=""; 47var writeLineUnderDevalVR=""; 48var writeLineUnderJava=""; 49var writeLineUnderFlash=""; 50var writeLineUnderSpiV=""; 51var writeLineUnderPangeaVR=""; 52 53var installfont="<font>"; 54var selectedlinkcolor="#333333"; 55var selectedlinkbgcolor="#AAAAFF"; 56 57var usePurePlayer=1; //0: PTViewer is used as Java player 1: PurePlayer is used (write correct names below) 58var archivePurePlayer='PurePlayerPro.jar'; //Copy this file in the same folder 59var codePurePlayer='PurePlayerPro'; 60 61var 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) 62 63///////////////////////////////////////////////////////////////////////////////////////////////// 64 65var isOpera=(navigator.userAgent.indexOf('Opera')!=-1); 66var isIE=((navigator.appVersion.indexOf("MSIE") != -1) && !isOpera); 67var isDOM=document.getElementById?1:0; 68var isNS4=navigator.appName=='Netscape'&&!isDOM?1:0; 69var isIE4=isIE&&!isDOM?1:0; 70var isWindows=(navigator.platform.indexOf('Win')!=-1); 71var isMac=(navigator.platform.indexOf('Mac')!=-1 || navigator.platform.indexOf('PowerPC')!=-1); 72var favoriteViewer=getCookie("panorama_viewer"); 73if(!favoriteViewer) favoriteViewer="DETECT"; //DEVALVR , QT, FLASH, JAVA, SPIV, PANGEAVR, or DETECT 74var detectableWithVB = false; 75var adviselineunderpano=""; 76var orgsizepluginx=new Array(); 77var orgsizepluginy=new Array(); 78var numberofplugins=0; 79var sizepluginx; 80var sizepluginy; 81var writePluginVR=0; 82var writeInstallPluginVR=0; 83var reloadpagewhenchangeviewer=0; 84var auxparameters=new Array(); 85auxparameters['devalvr']=new Array(); 86auxparameters['qt']=new Array(); 87auxparameters['java']=new Array(); 88auxparameters['flash']=new Array(); 89auxparameters['spiv']=new Array(); 90 91 92//Use 'viewerparameters' function to define different parameters for each viewer 93//Use "devalvr", "qt", "java", "flash", "spiv" or "pangeavr" in first parameter 94//for example: viewerparameters("devalvr","resize","0","autoplay","3"); 95 96function viewerparameters(viewer) 97{ 98 auxparameters[viewer]=new Array(); 99 for(var i=1;i<arguments.length;i++) 100 { 101 auxparameters[viewer][i-1]=arguments[i]; 102 } 103} 104 105function writecode(qtfile, devalvrfile, javafile, flashfile, spivfile, sizex, sizey) 106{ 107 writecode2(qtfile, qtfile, devalvrfile, javafile, flashfile, spivfile, sizex, sizey); 108} 109 110function writecode2(qtfile, pangeafile, devalvrfile, javafile, flashfile, spivfile, sizex, sizey) 111{ 112 var priority=new Array(); 113 var existfile=new Array(); 114 writePluginVR=0; 115 writeInstallPluginVR=0; 116 117 existfile[1]=(devalvrfile!=null && devalvrfile!=""); 118 existfile[2]=(qtfile!=null && qtfile!=""); 119 existfile[3]=(flashfile!=null && flashfile!=""); 120 existfile[4]=(javafile!=null && javafile!=""); 121 existfile[5]=(spivfile!=null && spivfile!=""); 122 existfile[6]=(pangeafile!=null && pangeafile!=""); 123 124 if((favoriteViewer=="DEVALVR" && (!existfile[1] || !isWindows)) 125 || (favoriteViewer=="QT" && !existfile[2]) 126 || (favoriteViewer=="JAVA" && !existfile[4]) 127 || (favoriteViewer=="FLASH" && !existfile[3]) 128 || (favoriteViewer=="SPIV" && !existfile[5]) 129 || (favoriteViewer=="PANGEAVR" && !existfile[6])) 130 favoriteViewer="DETECT"; 131 132 priority[2]=pluginPriority_DevalVR; 133 priority[3]=pluginPriority_QuickTime; 134 priority[1]=pluginPriority_Flash; 135 priority[4]=pluginPriority_Java; 136 priority[5]=pluginPriority_Spiv; 137 priority[6]=pluginPriority_PangeaVR; 138 139 if(favoriteViewer=="DETECT") 140 { 141 for(order=1;order<=6 && writePluginVR==0;order++) 142 { 143 for(n=1;n<=6;n++) 144 { 145 if(priority[n]==order && existfile[n] && IsPluginInstalled(n)) 146 { 147 writePluginVR=n; 148 break; 149 } 150 } 151 } 152 } 153 else if(favoriteViewer=="DEVALVR" && isWindows) 154 { 155 if(IsPluginInstalled(1)) writePluginVR=1; 156 else writeInstallPluginVR=1; 157 } 158 else if(favoriteViewer=="QT" && (isWindows || isMac)) 159 { 160 if(IsPluginInstalled(2)) writePluginVR=2; 161 else writeInstallPluginVR=2; 162 } 163 else if(favoriteViewer=="FLASH") 164 { 165 if(IsPluginInstalled(3)) writePluginVR=3; 166 else writeInstallPluginVR=3; 167 } 168 else if(favoriteViewer=="JAVA") 169 { 170 if(IsPluginInstalled(4)) writePluginVR=4; 171 else writeInstallPluginVR=4; 172 } 173 else if(favoriteViewer=="SPIV" && (isWindows || isMac)) 174 { 175 if(IsPluginInstalled(5)) writePluginVR=5; 176 else writeInstallPluginVR=5; 177 } 178 else if(favoriteViewer=="PANGEAVR" && isMac) 179 { 180 if(IsPluginInstalled(6)) writePluginVR=6; 181 else writeInstallPluginVR=6; 182 } 183 184 if(writeInstallPluginVR==0 && writePluginVR==0) 185 { 186 if(isWindows) writeInstallPluginVR=1; //Install DevalVR if there is not any plugin (fastest installation) 187 else if(isMac) writeInstallPluginVR=2; //Install QT always in Mac 188 else writeInstallPluginVR=4; //Install Java always in Linux 189 } 190 191 adviselineunderpano=""; 192 if(enableLineUnderPanorama) 193 { 194 if(writePluginVR==1 && writeLineUnderDevalVR!="") adviselineunderpano=writeLineUnderDevalVR; 195 else if(writePluginVR==2 && writeLineUnderQuickTime!="") adviselineunderpano=writeLineUnderQuickTime; 196 else if(writePluginVR==3 && writeLineUnderFlash!="") adviselineunderpano=writeLineUnderFlash; 197 else if(writePluginVR==4 && writeLineUnderJava!="") adviselineunderpano=writeLineUnderJava; 198 else if(writePluginVR==5 && writeLineUnderSpiV!="") adviselineunderpano=writeLineUnderSpiV; 199 else if(writePluginVR==6 && writeLineUnderPangeaVR!="") adviselineunderpano=writeLineUnderPangeaVR; 200 } 201 202 if(sizex=="") sizex="100%"; 203 if(sizey=="") sizey="94%"; 204 205 orgsizepluginx[numberofplugins]=sizex; 206 orgsizepluginy[numberofplugins]=sizey; 207 208 CalcLimits(sizex,sizey); 209 sizex=sizepluginx; 210 sizey=sizepluginy; 211 212 idpano='PANORAMAID'; 213 if(numberofplugins>0) idpano+=numberofplugins; 214 numberofplugins++; 215 216 if(writePluginVR==1) 217 { 218 if(detectvr_replacepage) window.location.replace(devalvrfile); 219 else detecvr_embedPlugin('devalvr',devalvrfile,sizex,sizey,idpano,'5D2CF9D0-113A-476B-986F-288B54571614','http://www.devalvr.com/instalacion/plugin/devalocx.cab#ver
219sion='+minDevalVRVersion,'application/x-devalvrx','http://www.devalvr.com/installation/','filter','0'); 220 } 221 else if(writePluginVR==2) 222 { 223 if(detectvr_replacepage) window.location.replace(qtfile); 224 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'); 225 } 226 else if(writePluginVR==3) 227 { 228 if(detectvr_replacepage) window.location.replace(flashfile); 229 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'); 230 } 231 else if(writePluginVR==4) 232 { 233 if(detectvr_replacepage) window.location.replace(javafile); 234 else 235 { 236 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'); 237 else detecvr_embedPlugin('java','',sizex,sizey,idpano,'','','','','code',codePurePlayer,'archive',archivePurePlayer,'panorama',javafile,'optimizememory','true'); 238 } 239 } 240 else if(writePluginVR==5) 241 { 242 if(detectvr_replacepage) window.location.replace(spivfile); 243 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=\'FALSE\'','progress','true','logo','false'); 244 } 245 else if(writePluginVR==6) 246 { 247 if(detectvr_replacepage) window.location.replace(pangeafile); 248 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'); 249 } 250 else if(writeInstallPluginVR==1) 251 { 252 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">'; 253 str+='Je vyžadován FlashPlayer plugin / Required FlasPlayer plugin'; 254 str+='<br /><br /><a href="http://www.adobe.com/products/flashplayer/">instalujte zde / install here</a>'; 255 str+='</td></tr></table></div>'; 256 257 document.writeln(str); 258 setTimeout("CheckPluginInstallation()",10000); 259 } 260 else 261 { 262 var pluginname,pluginurl; 263 264 if(writeInstallPluginVR==2) 265 { 266 pluginname="QuickTime Player" 267 pluginurl="http://www.apple.com/quicktime/download/" 268 } 269 else if(writeInstallPluginVR==3) 270 { 271 pluginname="Adobe Flash Player Version " + minFlashVersion + " or higher." 272 pluginurl="http://www.adobe.com/go/getflash/" 273 } 274 else if(writeInstallPluginVR==4) 275 { 276 pluginname="Java Software" 277 pluginurl="http://java.com/en/download/" 278 } 279 else if(writeInstallPluginVR==5) 280 { 281 pluginname="Shockwave Player" 282 pluginurl="http://www.macromedia.com/shockwave/download" 283 } 284 else if(writeInstallPluginVR==6) 285 { 286 pluginname="PangeaVR Player" 287 pluginurl="http://www.pangeasoft.net/pano/plugin/downloads.html" 288 } 289 290 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">'; 291 str+=installfont+' Je vyžadován '+ pluginname +'.'; 292 str+='<br /><br /><a href="'+ pluginurl +'" target="_blank">'+ pluginname +' instalujte zde</a>'; 293 str+='</font></td></tr></table></div>'; 294 document.writeln(str); 295 } 296 297 if(writeInstallPluginVR==0) 298 { 299 window.onresize=OnResizeWindow; 300 if(isWindows && isIE) 301 setTimeout("OnResizeWindow()",2000); 302 } 303} 304 305function ShowViewerSelection(options) 306{ 307 var optionviewer=new Array("DETECT","DEVALVR","QT","FLASH","JAVA","SPIV","PANGEAVR"); 308 var textviewer=new Array("Automatický výbÄr","DevalVR","QuickTime","Flash","Java","Spi-V","PangeaVR"); 309 var osviewer=new Array(0,1,0,0,0,0,2); //0:All 1:Windows 2:Mac 310 311 options=options.toUpperCase(); 312 reloadpagewhenchangeviewer=(options.indexOf("RELOAD")!=-1); 313 var vertical=''; 314 var str=''; 315 316 var combobox=(options.indexOf("COMBOBOX")!=-1); 317 var links=(options.indexOf("LINKS")!=-1); 318 319 if(options.indexOf("HORIZONTAL")==-1) 320 vertical='<br />'; 321 322 viewer=getCookie("panorama_viewer"); 323 if(!viewer) viewer="DETECT"; 324 325 if(combobox) 326 { 327 str+='<select id="comboboxViewer" style="WIDTH: 160px" width=160 name="comboboxViewer" onchange="favoriteViewerChangedCombo()">'; 328 } 329 for(n=0;n<7;n++) 330 { 331 if(options.indexOf(optionviewer[n])!=-1 && (osviewer[n]==0 || (osviewer[n]==1 && isWindows) || (osviewer[n]==2 && isMac))) 332 { 333 if(combobox) str+='<option value="'+optionviewer[n]+'" '+(viewer==optionviewer[n]?'selected="selected"':'')+'> '+textviewer[n]+'</option>'; 334 else if(links) str+='<a hRef="javascript:changeFavoriteViewer(\''+optionviewer[n]+'\');">
334'+(viewer==optionviewer[n]?('<font style="BACKGROUND-COLOR: '+selectedlinkbgcolor+'" color='+selectedlinkcolor+'> '):'')+textviewer[n]+(viewer==optionviewer[n]?' </font>':'')+' </a> '+vertical; 335 else str+='<input id="radioViewer" value='+n+' type=radio name="radioViewer" OnClick="javascript:changeFavoriteViewer(\''+optionviewer[n]+'\');" '+(viewer==optionviewer[n]?'checked="checked"':'')+' />'+textviewer[n]+' '+vertical; 336 } 337 } 338 if(combobox) 339 { 340 str+='</select><br />'; 341 } 342 else if(vertical=='') str+='<br />'; 343 344 document.writeln('<font id="IDVIEWEROPTIONS"> </font>'); 345 ref=getRef("IDVIEWEROPTIONS"); 346 if(ref) ref.innerHTML=str; 347} 348 349function favoriteViewerChangedCombo() 350{ 351 ref=getRef("comboboxViewer"); 352 if(ref) changeFavoriteViewer(ref.value); 353} 354 355function changeFavoriteViewer(viewer) 356{ 357 if(favoriteViewer!=viewer) 358 { 359 setCookie("panorama_viewer",viewer); 360 if(reloadpagewhenchangeviewer) 361 window.location.reload(); 362 } 363} 364 365//Old version, it exist for compatibility with old pages 366function writevrcode(movfile,javafile,flashfile,spivfile,width,height) 367{ 368 var sizex=0,sizey=0; 369 370 //Compatibility code, old versions of writevrcode only was 371 //qtfile and javafile parameters: writevrcode(movfile,javafile,width,height) 372 373 var paramsize=2; 374 for(var n=2;n<4;n++) 375 { 376 if(arguments[n]!=null) 377 { 378 var str=arguments[n].toString(); 379 str.toLowerCase(); 380 if(n==2) 381 { 382 if(str.indexOf(".swf")!=-1 || str=="") paramsize++; 383 else flashfile=""; 384 } 385 else if(n==3) 386 { 387 if(str.indexOf(".spv")!=-1 || str.indexOf(".xml")!=-1 || str.indexOf(".jpg")!=-1 || str=="") 388 { 389 if(paramsize==2) paramsize++; 390 paramsize++; 391 } 392 else spivfile=""; 393 } 394 } 395 } 396 if(arguments[paramsize]!=null) 397 sizex=arguments[paramsize]; 398 if(arguments[paramsize+1]!=null) 399 sizey=arguments[paramsize+1]; 400 401 var qtfile=movfile; 402 if(movfile.toLowerCase().indexOf(".mov")==-1) 403 qtfile=""; 404 405 writecode(qtfile,movfile,javafile,flashfile,spivfile,sizex,sizey); 406} 407 408function CheckPluginInstallation() 409{ 410 if(!isIE) navigator.plugins.refresh(false); 411 412 if(IsPluginInstalled(1)) 413 { 414 reloadPage(); 415 } 416 else setTimeout("CheckPluginInstallation()",3000); 417} 418 419function IsPluginInstalled(numplugin) 420{ 421 var installed=0; 422 423 if(isWindows && isIE) 424 { 425 if(detectableWithVB) 426 { 427 if(numplugin==1) 428 { 429 installed=detectActiveXControl('DevalVRXCtrl.DevalVRXCtrl.1'); 430 } 431 else if(numplugin==2) 432 { 433 installed=detectQuickTimeActiveXControl(); 434 } 435 else if(numplugin==3) 436 { 437 installed =DetectFlashVer(); 438 } 439 else if(numplugin==4) 440 { 441 installed=detectActiveXControl('JavaPlugin') && navigator.javaEnabled(); 442 } 443 else if(numplugin==5) 444 { 445 var strswversion=minShockwaveVersion.split("."); 446 var strshockwave=""; 447 do{ 448 strshockwave="SWCtl.SWCtl."+strswversion[0]+"."+strswversion[1]+".1"; 449 strswversion[1]++; 450 if(strswversion[1]>9) 451 { 452 strswversion[1]=0; 453 strswversion[0]++; 454 } 455 installed=detectActiveXControl(strshockwave); 456 }while(installed==0 && strswversion[0]<20); 457 } 458 } 459 } 460 else 461 { 462 if(numplugin==1) 463 { 464 if(navigator.mimeTypes && navigator.mimeTypes["application/x-devalvrx"] && (isOpera || navigator.mimeTypes["application/x-devalvrx"].enabledPlugin)) 465 { 466 var words = navigator.plugins["DevalVR 3D Plugin"].description.split(" "); 467 var version = words[3].split(","); 468 var min = minDevalVRVersion.split(","); 469 installed=checkMinVersion(version,min,4); 470 } 471 } 472 else if(numplugin==2) 473 { 474 if(isMac) 475 { 476 installed=1; 477 } 478 else 479 { 480 if(navigator.mimeTypes && navigator.mimeTypes["video/quicktime"] && (isOpera || navigator.mimeTypes["video/quicktime"].enabledPlugin)) 481 { 482 for (var i = 0; i < navigator.plugins.length; i++) 483 { 484 if(navigator.plugins[i].name.indexOf("QuickTime Plug-in")!=-1) 485 { 486 var words = navigator.plugins[i].name.split(" "); 487 if (words.length<3) installed=1; 488 else 489 { 490 var version = words[2].split("."); 491 var min = minQTVersion.split("."); 492 installed=checkMinVersion(version,min,version.length); 493 } 494 break; 495 } 496 } 497 } 498 } 499 } 500 else if(numplugin==3) 501 { 502 installed = DetectFlashVer(); 503 } 504 else if(numplugin==4) 505 { 506 if (isOpera || (navigator.mimeTypes && navigator.mimeTypes['application/x-java-applet'] && navigator.mimeTypes["application/x-java-applet"].enabledPlugin)) 507 { 508 installed=navigator.javaEnabled(); 509 } 510 } 511 else if(numplugin==5) 512 { 513 if(navigator.mimeTypes && navigator.mimeTypes["application/x-director"] && (isOpera || navigator.mimeTypes["application/x-director"].enabledPlugin)) 514 { 515 var description=navigator.plugins["Shockwave for Director"].description; 516 var pos=description.indexOf("version"); 517 if (pos!=-1) 518 { 519 var words=description.substr(pos+8); 520 var version = words.split("."); 521 var min = minShockwaveVersion.split("."); 522 installed=checkMinVersion(version,min,2); 523 } 524 } 525 } 526 else if(numplugin==6) 527 { 528 if(navigator.mimeTypes && navigator.mimeTypes["graphics/pangeavr2"] && (isOpera || navigator.mimeTypes["graphics/pangeavr2"].enabledPlugin)) 529 { 530 installed=1; 531 } 532 } 533 } 534 return installed; 535} 536 537function OnResizeWindow() 538{ 539 for(n=0;n<numberofplugins;n++) 540 { 541 CalcLimits(orgsizepluginx[n],orgsizepluginy[n]); 542 543 if(n==0) ref=getRef("PANORAMAID"); 544 else ref=getRef("PANORAMAID"+n); 545 if(ref!=null) 546 { 547 if(isIE || isOpera) 548 { 549 ref.style.width=sizepluginx; 550 ref.style.height=sizepluginy; 551 } 552 else 553 { 554 ref.width=sizepluginx; 555 ref.height=sizepluginy; 556 } 557 } 558 } 559} 560 561function checkMinVersion(version,min,num) 562{ 563 var installed=0; 564 for (var i = 0; i < num; i++) 565 { 566 if(parseInt(version[i])>parseInt(min[i])) 567 { 568 installed=1; 569 break; 570 } 571 else if(parseInt(version[i])<parseInt(min[i])) 572 { 573 break; 574 } 575 else if(parseInt(version[i])==parseInt(min[i]) && i==num-1) 576 installed=1; 577 } 578 return installed; 579} 580 581function CalcLimits(sizex, sizey) 582{ 583 var sizew,sizeh,limits; 584 585 if(writePluginVR==4) 586 { 587 maxx=maxViewerWidthJava; 588 maxy=maxViewerHeightJava; 589 limits=enableSizeLimitsJava; 590 } 591 else if(writePluginVR==3) 592 { 593 maxx=maxViewerWidthFlash; 594 maxy=maxViewerHeightFlash; 595 limits=enableSizeLimitsFlash; 596 } 597 else 598 { 599 maxx=maxViewerWidth; 600 maxy=maxViewerHeight; 601 limits=enableSizeLimits; 602 } 603 604 if(sizex<0) sizex=getPageWidth()+parseInt(sizex); 605 if(sizey<0) sizey=getPageHeight()+parseInt(sizey); 606 607 if(limits || enableSizeRatio || adviselineunderpano!="") 608 { 609 sizex=sizex.toString(); 610 sizey=sizey.toString(); 611 pw=sizex.indexOf("px"); 612 if(pw!=-1) sizex=sizex.substring(0,pw); 613 pw=sizey.indexOf("px"); 614 if(pw!=-1) sizey=sizey.substring(0,pw); 615 616 sizew=getPageWidth(); 617 sizeh=getPageHeight(); 618 619 pw=sizex.indexOf("%"); 620 if(pw!=-1) 621 { 622 percent=sizex.substring(0,pw); 623 sizex=(sizew*percent)/100; 624 } 625 pw=sizey.indexOf("%"); 626 if(pw!=-1) 627 { 628 percent=sizey.substring(0,pw); 629 sizey=(sizeh*percent)/100; 630 } 631 632 sizex=parseInt(sizex); 633 sizey=parseInt(sizey); 634 635 if(limits) 636 { 637 if(sizex>maxx) sizex=maxx; 638 if(sizey>maxy) sizey=maxy; 639 } 640 if(enableSizeRatio) 641 { 642 x=sizey*sizeRatio; 643 if(x<sizex) 644 { 645 sizex=x; 646 if(limits && sizex>maxx) sizex=maxx; 647 } 648 } 649 if(adviselineunderpano!="") 650 { 651 sizey-=16; 652 } 653 } 654 655 sizepluginx=sizex; 656 sizepluginy=sizey; 657 658} 659 660function reloadPage() 661{ 662 if(!isIE) navigator.plugins.refresh(true); 663 window.location.reload(); 664} 665 666function getCookie(nombre) 667{ 668 var dcookie=document.cookie; 669 var cname=nombre+"="; 670 var longitud=dcookie.length; 671 var inicio=0; 672 673 while(inicio<longitud) 674 { 675 var vbegin=inicio+cname.length; 676 if(dcookie.substring(inicio,vbegin)==cname) 677 { 678 var vend=dcookie.indexOf(";",vbegin); 679 if(vend==-1) vend=longitud; 680 return unescape(dcookie.substring(vbegin,vend)); 681 } 682 inicio=dcookie.indexOf(" ",inicio)+1; 683 if(inicio==0) break; 684 } 685 return null; 686} 687 688function setCookie(name, value, expires) 689{ 690 if(!expires) 691 { 692 expires=new Date(); 693 expires.setTime(expires.getTime()+(24*3600*1000*365)); 694 } 695 var str=name+"="+escape(value)+"; expires=" + expires.toGMTString(); 696 697 document.cookie=str; 698} 699 700function getPageHeight() 701{ 702 var ret,margintop=16,marginbottom=16; 703 704 if(isIE) ret=document.body.clientHeight-document.body.topMargin-document.body.bottomMargin; 705 else 706 { 707 if(document.body.attributes.topmargin) 708 margintop=document.body.attributes.topmargin.value; 709 if(document.body.attributes.bottommargin) 710 marginbottom=document.body.attributes.bottommargin.value; 711 ret=window.innerHeight-margintop-marginbottom; 712 } 713 return ret; 714} 715 716function getPageWidth() 717{ 718 var ret,marginleft=16,marginright=16; 719 720 if(isIE) ret=document.body.clientWidth-document.body.leftMargin-document.body.rightMargin; 721 else
722 { 723 if(document.body.attributes.leftmargin) 724 marginleft=document.body.attributes.leftmargin.value; 725 if(document.body.attributes.rightmargin) 726 marginright=document.body.attributes.rightmargin.value; 727 ret=window.innerWidth-marginleft-marginright; 728 } 729 return ret; 730} 731 732function IEGetSwfVer() 733{ 734 flashVer=0; 735 736 for(i=25;i>0 && flashVer==0;i--) 737 { 738 flashVer=VBGetSwfVer(i); 739 } 740 return flashVer; 741} 742 743// JavaScript helper required to detect Flash Player PlugIn version information 744function JSGetSwfVer() 745{ 746 // NS/Opera version >= 3 check for Flash plugin in plugin array 747 if (navigator.plugins != null && navigator.plugins.length > 0) { 748 if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { 749 var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; 750 var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; 751 descArray = flashDescription.split(" "); 752 tempArrayMajor = descArray[2].split("."); 753 versionMajor = tempArrayMajor[0]; 754 versionMinor = tempArrayMajor[1]; 755 if ( descArray[3] != "" ) { 756 tempArrayMinor = descArray[3].split("r"); 757 } else { 758 tempArrayMinor = descArray[4].split("r"); 759 } 760 versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0; 761 flashVer = versionMajor + "." + versionMinor + "." + versionRevision; 762 } else { 763 flashVer = -1; 764 } 765 } 766 // MSN/WebTV 2.6 supports Flash 4 767 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; 768 // WebTV 2.5 supports Flash 3 769 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; 770 // older WebTV supports Flash 2 771 else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; 772 // Can't detect in all other cases 773 else { 774 775 flashVer = -1; 776 } 777 return flashVer; 778} 779 780function DetectFlashVer() 781{ 782 if (isIE && isWindows && !isOpera) { 783 versionStr = IEGetSwfVer(); 784 } else { 785 versionStr = JSGetSwfVer(); 786 } 787 if (versionStr != 0 && versionStr != -1) 788 { 789 if(isIE && isWindows && !isOpera) { 790 tempArray = versionStr.split(" "); 791 tempString = tempArray[1]; 792 versionArray = tempString .split(","); 793 } 794 else 795 { 796 versionArray = versionStr.split("."); 797 } 798 var min=minFlashVersion.split("."); 799 return checkMinVersion(versionArray,min,3); 800 } 801 else return false; 802} 803 804function writeParameters(parameters, auxparameters, IEparameters) 805{ 806 str =''; 807 for(i=0;i<auxparameters.length;i+=2) 808 { 809 if(IEparameters) 810 str+=' <param name="' + auxparameters[i] + '" value="' + auxparameters[i+1] + '" />'; 811 else 812 str+=' ' + auxparameters[i] + '="' + auxparameters[i+1] + '"'; 813 } 814 for(i=9;i<parameters.length;i+=2) 815 { 816 var exists=0; 817 for(j=0;j<auxparameters.length;j+=2) { 818 if(auxparameters[j]==parameters[i]) exists=1; 819 } 820 if(exists==0) 821 { 822 if(IEparameters) 823 str+=' <param name="' + parameters[i] + '" value="' + parameters[i+1] + '" />'; 824 else 825 str+=' '+ parameters[i] + '="' + parameters[i+1] + '"'; 826 } 827 } 828 return str; 829} 830 831function detecvr_embedPlugin(plugin,sFile,sWidth,sHeight,id,classid,codebase,type,pluginspage) 832{ 833 str='<div align=center>'; 834 if(classid!='' || plugin=='java') 835 { 836 if(plugin=='java') str+='<applet '; 837 else str+='<object classid="clsid:'+classid+'" codebase="'+codebase+'"'; 838 str+=' id="'+id+'" style="WIDTH: ' + sWidth + '; HEIGHT: ' + sHeight + '" width="' + sWidth + '" height="' + sHeight + '" >'; 839 840 if(plugin!='java') { 841 str+=' <param name="src" value="' + sFile + '" />'; 842 } else { 843 str+=' <param name="gui" value="gui.ivu" />'; 844 } 845 846 847 str+=writeParameters(arguments,auxparameters[plugin],1); 848 } 849 if(type!='') 850 { 851 str+='<embed id="'+id+'" name="'+id+'" width="' + sWidth + '" height="' + sHeight + '"'; 852 str+=' pluginspage="'+pluginspage+'"'; 853 str+=' type="'+type+'"'; 854 str+=' src="' + sFile + '"'; 855 str+=writeParameters(arguments,auxparameters[plugin],0); 856 str+=' />'; 857 } 858 if(classid!='') str+='</object>'; 859 if(plugin=='java') str+='</applet>'; 860 861 if(adviselineunderpano!="") 862 { 863 if(sWidth!="100%") str+='<br />'; 864 str+=adviselineunderpano; 865 } 866 str+='</div>'; 867 document.writeln(str); 868} 869 870// Here we write out the VBScript block for MSIE Windows 871if (isWindows && isIE) 872{ 873 str='<script language="VBscript" type="text/vbscript">'; 874 875 str+='detectableWithVB = False \n'; 876 str+='If ScriptEngineMajorVersion >= 2 then \n'; 877 str+=' detectableWithVB = True \n'; 878 str+='End If \n'; 879 880 str+='Function detectActiveXControl(activeXControlName) \n'; 881 str+=' on error resume next \n'; 882 str+=' detectActiveXControl = False \n'; 883 str+=' If detectableWithVB Then \n'; 884 str+=' set pControl = CreateObject(activeXControlName) \n'; 885 str+=' If (IsObject(pControl)) then \n'; 886 str+=' detectActiveXControl = True \n'; 887 str+=' End If \n'; 888 str+=' End If \n'; 889 str+='End Function \n'; 890 891 str+='Function detectQuickTimeActiveXControl() \n'; 892 str+=' on error resume next \n'; 893 str+=' detectQuickTimeActiveXControl = False \n'; 894 str+=' If detectableWithVB Then \n'; 895 str+=' detectQuickTimeActiveXControl = False \n'; 896 str+=' hasQuickTimeChecker = false \n'; 897 str+=' Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1") \n'; 898 str+=' If IsObject(hasQuickTimeChecker) Then \n'; 899 str+=' If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then \n'; 900 str+=' detectQuickTimeActiveXControl = True \n'; 901 str+=' End If \n'; 902 str+=' End If \n'; 903 str+=' End If \n'; 904 str+='End Function \n'; 905 906 str+='Function VBGetSwfVer(i) \n'; 907 str+=' on error resume next \n'; 908 str+=' Dim swControl, swVersion \n'; 909 str+=' swVersion = 0 \n'; 910 str+=' If detectableWithVB Then \n'; 911 str+=' set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i)) \n'; 912 str+=' If (IsObject(swControl)) then \n'; 913 str+=' swVersion = swControl.GetVariable("$version") \n'; 914 str+=' End If \n'; 915 str+=' End If \n'; 916 str+=' VBGetSwfVer = swVersion \n'; 917 str+='End Function \n'; 918 str+='</scr' + 'ipt>'; 919 920 document.writeln(str); 921} 922 923 924//////////////// Special functions to create dynamic pages 925function getQueryVariable(variable) 926{ 927 var query = window.location.search.substring(1); 928 var vars = query.split("&"); 929 for (var i=0;i< vars.length;i++) 930 { 931 var pair = vars[i].split("="); 932 if (pair[0] == variable) 933 { 934 return pair[1]; 935 } 936 } 937 return -1; 938} 939 940function getRef(id) 941{ 942 return (isDOM ? document.getElementById(id) : (isIE4 ? document.all[id] : document.layers[id])); 943} 944function getStyle(id) 945{ 946 return (isNS4 ? getRef(id) : getRef(id).style); 947} 948 949var panoramadata=new Array(); 950var panoramanumdata=0; 951 952function insertpanoramadata(name, panofile, title, description, date, jpgimage) 953{ 954 var pano="pano"+panoramanumdata; 955 panoramadata[pano]=name; 956 panoramadata[name]=new Array(); 957 panoramadata[name]["movfile"]=panofile; 958 panoramadata[name]["title"]=title; 959 panoramadata[name]["description"]=description; 960 panoramadata[name]["date"]=date; 961 panoramadata[name]["jpgimage"]=jpgimage; 962 963 panoramanumdata++; 964} 965 966///////////////////
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.