function hdvHelperFn()
{var ua=navigator.userAgent;var isIE=/(MSIE)|(Trident\/.*rv[: ]\d+)/.test(ua);var isSupportedBrowser=((isIE||ua.indexOf("Firefox")!=-1||ua.indexOf("Safari")!=-1)&&ua.indexOf("Edge")==-1);var isSupportedOS=(ua.indexOf("Windows NT 5.1")!=-1||ua.indexOf("Windows NT 5.2")!=-1||ua.indexOf("Windows NT 6")!=-1||ua.indexOf("Windows NT 10")!=-1);var isSupportedSilverlightBrowser=(isSupportedBrowser||ua.indexOf("Opera")!=-1);var isSilverlightSupportedOS=(ua.indexOf("Windows")!=-1||ua.indexOf("Intel Mac OS X")!=-1);var handlerCount=0;this.getMimeType=function(){return "application/x-hdview";}
this.getClsid=function(){return "F81FB289-0FB6-4FE0-A488-101447EE1ED3";}
this.getCodepath=function(){return "http://research.microsoft.com/en-us/um/redmond/groups/IVM/HDView/";}
this.getSLpath=function(){return "http://research.microsoft.com/en-us/um/redmond/groups/IVM/HDViewSL/";}
this.getVersion=function(){return "3,3,0,0";}
this.getSilverlightVersion=function(){return "2.0.31005.0";}
this.isOSSupported=function(){return isSupportedOS;}
this.isPlatformSupported=function(){return isSupportedOS&&isSupportedBrowser;}
this.isSilverlightOSSupported=function(){return isSilverlightSupportedOS;}
this.isSilverlightPlatformSupported=function(){return isSilverlightSupportedOS&&isSupportedSilverlightBrowser;}
this.isHDViewInstalled=function()
{var installed=null;try{var reqVersionArray=this.getVersion().split(',');var pluginVersionArray;if(isIE){var hdvCntrl=new ActiveXObject("HDView.HDViewControl");if(hdvCntrl){pluginVersionArray=hdvCntrl.Version.split('.');}}
else{navigator.plugins.refresh(false);var hdvPlugin=navigator.plugins["HD View"];if(hdvPlugin){var versionMatch=/\d+\.\d+\.\d+\.\d+/.exec(hdvPlugin.description);if(versionMatch){pluginVersionArray=versionMatch[0].split('.');}}}
installed=pluginVersionArray?(reqVersionArray[0] ';plugin=div.childNodes[0];}}
installed=plugin?(plugin.IsVersionSupported(this.getSilverlightVersion())?true:false):null;plugin=null;}
catch(e){}
if(div)document.body.removeChild(div);return installed;}
this.addWindowEvent=function(eventName,func){var oldHandler=window[eventName];if(typeof oldHandler!="function"){window[eventName]=func;}
else{window[eventName]=function(){oldHandler();func();}}}
this.generateHandlerName=function(handler){var handlerName=null;if(typeof handler=="string"){handlerName=handler;}
else if(typeof handler=="function"){if(handlerCount==0){this.addWindowEvent("onunload",cleanupGeneratedHandlers);}
var count=handlerCount++;handlerName="__hdvEvent"+count;window[handlerName]=handler;}
return handlerName;}
function cleanupGeneratedHandlers(){for(var i=handlerCount-1;i>=0;i--){window["__hdvEvent"+i]=null;}
handlerCount=0;}};if(!window.hdvHelper){window.hdvHelper=new hdvHelperFn();}
function hdvHost(id,elementId,width,height,href,args,allowAbsoluteUrl)
{this.setArgs=setArgs;this.setProperty=setProperty;this.getProperty=getProperty;this.permalinkPopUp=permalinkPopUp;this.getPermalink=getPermalink;this.getEmbed=getEmbed;var argId=id;var argElementId=elementId;var argWidth=width;var argHeight=height;var argHref=href;var argArgs=args;var argAllowAbsoluteUrl=allowAbsoluteUrl;var parent=null;var hdvControl=null;var propertyHolder=null;var deferredProperties={};var currentFilename="";var currentConversion="";var currentViewer=0;constructor();function constructor()
{setArgs(argArgs);parent=document.getElementById(argElementId);if(currentConversion!=""){parent.innerHTML=buildHTMLMessage(' '+
'
Converting...
');var callback=hdvHelper.generateHandlerName(conversionCallback);setTimeout(function()
{loadScript("http://hdviewconvert.cloudapp.net/Convert.aspx?InputUrl="+encodeURIComponent(currentConversion)+"&Callback="+callback);},0);}
else{createViewer();}}
function createViewer()
{if(currentViewer==1||(currentViewer==2&&!hdvHelper.isPlatformSupported())){if(!hdvHelper.isSilverlightPlatformSupported()){parent.innerHTML=buildHTMLForSilverlightNotSupported();}
else if(!hdvHelper.isSilverlightInstalled()){parent.innerHTML=buildHTMLForSilverlightInstall();}
else{parent.innerHTML=buildHTMLForSilverlight(argId,argWidth,argHeight);hdvControl=document.getElementById(argId);}}
else{if(!hdvHelper.isPlatformSupported()){parent.innerHTML=buildHTMLForNotSupported();}
else if(!hdvHelper.isHDViewInstalled()){parent.innerHTML=buildHTMLForInstall();}
else{parent.innerHTML=buildHTMLForControl(argId,argWidth,argHeight);hdvControl=document.getElementById(argId);propertyHolder=hdvControl;setDeferredProperties();}}}
function setArgs(argString)
{var args=argString.split('&');for(var i=0;i0&&val.length>0){if(prop=="Viewer"){if(!hdvControl){currentViewer=val;}}
else if(prop=="Convert"){if(!hdvControl){currentConversion=unescape(val);}}
else{setProperty(prop,val);}}}}
function setProperty(prop,val)
{if(!propertyHolder){deferredProperties[prop]=val;}
else{if(prop=="FileName"){val=unescape(val);currentFilename=val;if(val.charAt(0)=='#')
{val=val.substring(1,val.length);val=document.getElementById(val).text;}
else
{if(!argAllowAbsoluteUrl)
{var pageArgs=argHref.split('?');var pagePath=pageArgs[0].substring(0,pageArgs[0].lastIndexOf('/')+1);val=pagePath+val;}}}
if(prop=="XML"){prop="FileName";currentFilename="";}
if(prop=="FOV"||prop=="Yaw"||prop=="Pitch"||prop=="Zoom"||prop=="XCtr"||prop=="YCtr")
{val=val.toString();var separator=Number(1.1).toLocaleString().charAt(1);val=val.replace('/\\'+separator+'/','.');}
if(prop=="BackgroundColor"||prop=="ForegroundColor")
val=parseInt(val);propertyHolder[prop]=val;}}
function getProperty(prop)
{if(propertyHolder){return propertyHolder[prop];}}
function permalinkPopUp()
{if(hdvControl){var permalink=getPermalink();permalink=permalink.replace(/&/g,'&');var embed=getEmbed();embed=embed.replace(/&/g,'&');win=window.open("","","width=450, height=180");win.document.open();win.document.write('HD View ');win.document.write('');win.document.write('');win.document.write('
');win.document.close();}}
function getPermalink()
{var pageArgs=argHref.split('?');var permafile="FileName="+escape(currentFilename);if(currentConversion!=""){permafile="Convert="+escape(currentConversion);}
var permalinkargs=getPermalinkArgs();return pageArgs[0]+'?'+permafile+permalinkargs;}
function getEmbed()
{var pageArgs=argHref.split('?');var pagePath=pageArgs[0].substring(0,pageArgs[0].lastIndexOf('/')+1);var embedfile="FileName="+(!argAllowAbsoluteUrl?pagePath:"")+escape(currentFilename);if(currentConversion!=""){embedfile="Convert="+escape(currentConversion);}
else if(currentFilename.charAt(0)=='#'){var embedxml=document.getElementById(currentFilename.substring(1,currentFilename.length));var xmltext=embedxml.text.replace(/\t/g,' ').replace(/\s+/g,' ');if(window.DOMParser){embedxml=new DOMParser().parseFromString(xmltext.substr(xmltext.indexOf("?>")+2),"text/xml");}
else{embedxml=embedxml.XMLDocument;}
var imageset=embedxml.getElementsByTagName("imageset");if(imageset.length>0){imageset=imageset[0].attributes;var embedurl=imageset.getNamedItem("url");if(embedurl.value.indexOf("https://")<0&&embedurl.value.indexOf("http://")<0&&embedurl.value.indexOf("file://")<0&&embedurl.value.indexOf("ftp://")<0&&embedurl.value.charAt(0)!='/'&&embedurl.value.charAt(0)!='\\'&&embedurl.value.charAt(1)!=':'){embedurl.value=pagePath+embedurl.value;xmltext='\r\n\r\n \r\n \r\n';}}
embedfile="FileName="+escape(xmltext);}
var permalinkargs=getPermalinkArgs();permalinkargs=permalinkargs.replace(/&/g,'&');var iframe="";return iframe;}
function getPermalinkArgs()
{var permalinkargs;var fov=getProperty('FOV');if(fov>0)
permalinkargs="&FOV="+Math.round(fov*1000)/1000+
"&Yaw="+Math.round(getProperty('Yaw')*1000)/1000+
"&Pitch="+Math.round(getProperty('Pitch')*1000)/1000;else
permalinkargs="&Zoom="+Math.round(getProperty('Zoom')*1000)/1000+
"&XCtr="+Math.round(getProperty('XCtr')*1000000)/1000000+
"&YCtr="+Math.round(getProperty('YCtr')*1000000)/1000000;var panMode=getProperty("PanMode");if(panMode!=0)
permalinkargs+="&PanMode="+panMode;var toneMode=getProperty("ToneMode");if(toneMode!=0)
permalinkargs+="&ToneMode="+toneMode;var projMode=getProperty("ProjMode");if(projMode!=0)
permalinkargs+="&ProjMode="+projMode;var backgroundColor=getProperty("BackgroundColor");if(backgroundColor!=0x000000)
permalinkargs+="&BackgroundColor=0x"+backgroundColor.toString(16);var foregroundColor=getProperty("ForegroundColor");if(foregroundColor<0)
foregroundColor+=0x100000000;if(foregroundColor!=0xFFFFFF00)
permalinkargs+="&ForegroundColor=0x"+foregroundColor.toString(16);if(currentViewer!=0)
permalinkargs+="&Viewer="+currentViewer;return permalinkargs;}
function buildHTMLForInstall()
{var reqVersionArray=hdvHelper.getVersion().split(',');var installPage=hdvHelper.getCodepath()+'HDInstall.htm';var installImage=hdvHelper.getCodepath()+'images/HDInstall3.jpg';var verb=hdvHelper.isHDViewInstalled()==null?'Install':'Upgrade to';return buildHTMLMessage(verb+' HD View Beta '+reqVersionArray[0]+'.'+reqVersionArray[1]+' to see this content. '+
'What is HD View? '+
''+
' '+
'After installing, you may need to restart your browser.');}
function buildHTMLForSilverlightInstall()
{var verb=hdvHelper.isSilverlightInstalled()==null?'Install':'Upgrade to';return buildHTMLMessage(verb+' the latest version of Silverlight to see this content. '+
'What is Silverlight? '+
''+
' '+
'After installing, you may need to restart your browser.');}
function buildHTMLForControl(id,width,height)
{var html="";html+='';html+=' ';return html;}
function buildHTMLForSilverlight(id,width,height)
{var handlerName=hdvHelper.generateHandlerName(silverlightPluginLoaded);var html='';html+='';html+=' ';html+=' ';html+=' ';html+=' ';html+=' ';html+=' ';html+=buildHTMLMessage('This content requires Silverlight (version 2 or newer). '+
'What is Silverlight? '+
''+
' '+
'After installing, you may need to restart your browser.');html+=' ';return html;}
function buildHTMLForNotSupported()
{var html='';if(!hdvHelper.isOSSupported()){html+='Sorry, but HD View is not supported on this operating system. '+
'HD View works on Windows XP, Server 2003, Vista, 7, 8, and 10.';}
else{html+='Sorry, but HD View is not supported on this browser. '+
'HD View works on Internet Explorer, Firefox, Flock, Netscape, Opera, Chrome, and Safari.';}
html+=' '+
'What is HD View? ';return buildHTMLMessage(html);}
function buildHTMLForSilverlightNotSupported()
{var html='';if(!hdvHelper.isSilverlightOSSupported()){html+='Sorry, but Silverlight is not supported on this operating system. '+
'Silverlight works on Windows and on Mac OS (Intel only).';}
else{html+='Sorry, but Silverlight is not supported on this browser. '+
'Silverlight works on Internet Explorer, Firefox, Flock, Netscape, Opera, Chrome, and Safari.';}
html+=' '+
'What is Silverlight? ';return buildHTMLMessage(html);}
function buildHTMLMessage(message)
{return '';}
function pluginLoaded()
{try{propertyHolder=hdvControl;setDeferredProperties();}
catch(exception){}}
function silverlightPluginLoaded()
{try{propertyHolder=hdvControl.content.settings;setDeferredProperties();}
catch(exception){}}
function setDeferredProperties()
{if(deferredProperties.XML){setProperty("XML",deferredProperties.XML);delete deferredProperties["XML"];}
for(var prop in deferredProperties){setProperty(prop,deferredProperties[prop]);}
deferredProperties={};}
function loadScript(source)
{var script=document.createElement("script");script.type="text/javascript";script.src=source;var head=document.getElementsByTagName("head")[0]||document.documentElement;head.insertBefore(script,head.firstChild);}
function conversionCallback(result)
{if(result.ErrorMessage){parent.innerHTML=buildHTMLMessage(result.ErrorMessage);}
else{setProperty("XML",result.OutputText);createViewer();}}}