1<!DOCTYPE html> 2<html> 3<head> 4<meta name="description" content="Virtual Tour"/>
5<script>
vendor: 323 bytes, line 5
5(function(i,s,o,g,r,a,m){i["GoogleAnalyticsObject"]=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,"script","//www.google-analytics.com/analytics.js","ga");ga("create", "
5UA-116087-1
vendor: 35 bytes, line 5
5", "auto"); ga("send", "pageview");
5</script>
5 6 <title>NUML</title> 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 8 <meta name="viewport" content="user-scalable=no, initial-scale=0.5, width=device-width" /> 9
9<script src="lib/tdvplayer.js"></script>
9 10
10<script src="script.js"></script>
10 11
11<script src="lib/ThreeWebGL.js"></script>
11 12
12<script type="text/javascript"> 13 var player; 14 var playersPlayingTmp = []; 15 var isInitialized = false; 16 17 function loadTour() 18 { 19 if(isInitialized) 20 return; 21 22 isInitialized = true; 23 24 var beginFunc = function(event){ 25 if(event.name == 'begin') 26 { 27 var camera = event.data.source.get('camera'); 28 if(camera && camera.get('initialSequence') && camera.get('initialSequence').get('movements').length > 0) 29 return; 30 } 31 32 player.unbindOnObjectsOf('PanoramaPlayListItem', 'begin', beginFunc, player, true); 33 player.unbind('stateChange', beginFunc, player, true); 34 window.parent.postMessage("tourLoaded", '*'); 35 36 disposePreloader(); 37 }; 38 39 var settings = new TDV.PlayerSettings(); 40 41 settings.set(TDV.PlayerSettings.CONTAINER, document.getElementById('viewer')); 42 settings.set(TDV.PlayerSettings.SCRIPT_URL, 'script.js'); 43 settings.set(TDV.PlayerSettings.FLASH_EXPRESS_INSTALLER_URL, 'lib/ExpressInstall.swf'); 44 settings.set(TDV.PlayerSettings.FLASH_AUDIO_PLAYER_URL, 'lib/AudioPlayer.swf'); 45 settings.set(TDV.PlayerSettings.FLASH_PANORAMA_PLAYER_URL, 'lib/PanoramaRenderer.swf'); 46 settings.set(TDV.PlayerSettings.THREE_JS_WEBGL_URL, 'lib/ThreeWebGL.js'); 47 settings.set(TDV.PlayerSettings.WEBVR_POLYFILL_URL, 'lib/WebVRPolyfill.js'); 48 settings.set(TDV.PlayerSettings.HLS_URL, 'lib/Hls.js'); 49 window.tdvplayer = player = TDV.PlayerAPI.create(settings); 50 player.bind('stateChange', beginFunc, player, true); 51 player.bindOnObjectsOf('PanoramaPlayListItem', 'begin', beginFunc, player, true); 52 player.bindOnObject('rootPlayer', 'start', function(e){ 53 var queryDict = {}; location.search.substr(1).split("&").forEach(function(item) {var k = item.split("=")[0], v = decodeURIComponent(item.split("=")[1]);queryDict[k] = v}); 54 if("media-index" in queryDict){ 55 setMediaByIndex(parseInt(queryDict["media-index"]) - 1); 56 } 57 else if("media-name" in queryDict){ 58 setMediaByName(queryDict["media-name"]); 59 } 60 }, player, false); 61 62 /* Listen messages */ 63 window.addEventListener('message', function (e) { 64 //Listen to messages for make actions to player in the format function:param1,param2 65 var action = e.data; 66 if (action == 'pauseTour' || action == 'resumeTour') { 67 this[action].apply(this); 68 } 69 }); 70 } 71 72 function pauseTour() 73 { 74 var playLists = player.getByClassName('PlayList'); 75 for(var i = 0, count = playLists.length; i<count; i++) 76 { 77 var playList = playLists[i]; 78 var index = playList.get('selectedIndex'); 79 if(index != -1) 80 { 81 var item = playList.get('items')[index]; 82 var itemPlayer = item.get('player'); 83 if(itemPlayer && itemPlayer.pause) 84 { 85 playersPlayingTmp.push(itemPlayer); 86 itemPlayer.pause(); 87 } 88 } 89 } 90 91 player.getById('pauseGlobalAudios')(); 92 } 93 94 function resumeTour() 95 { 96 while(playersPlayingTmp.length) 97 { 98 var viewer = playersPlayingTmp.pop(); 99 viewer.play(); 100 } 101 102 player.getById('resumeGlobalAudios')(); 103 } 104 105 function setMediaByIndex(index) 106 { 107 if(window.tdvplayer !== undefined) { 108 var rootPlayer = window.tdvplayer.getById('rootPlayer'); 109 rootPlayer.setMainMediaByIndex(index); 110 } 111 } 112 113 function setMediaByName(name) 114 { 115 if(window.tdvplayer !== undefined) { 116 var rootPlayer = window.tdvplayer.getById('rootPlayer'); 117 rootPlayer.setMainMediaByName(name); 118 } 119 } 120 121 function showPreloader() 122 { 123 var preloadContainer = document.getElementById('preloadContainer'); 124 preloadContainer.style.opacity = 1; 125 } 126 127 function disposePreloader() 128 { 129 var transitionEnd = transitionEndEventName(); 130 var preloadContainer = document.getElementById('preloadContainer'); 131 132 133 134 var transitionEndName = transitionEndEventName(); 135 if(transitionEndName) 136 { 137 preloadContainer.addEventListener(transitionEnd, hide, false); 138 139 preloadContainer.style.opacity = 0; 140 } 141 else 142 { 143 hide(); 144 } 145 146 function hide() 147 { 148 preloadContainer.style.visibility = 'hidden'; 149 preloadContainer.style.display = 'none'; 150 } 151 152 function transitionEndEventName () { 153 var i, 154 undefined, 155 el = document.createElement('div'), 156 transitions = { 157 'transition':'transitionend', 158 'OTransition':'otransitionend', 159 'MozTransition':'transitionend', 160 'WebkitTransition':'webkitTransitionEnd' 161 }; 162 163 for (i in transitions) { 164 if (transitions.hasOwnProperty(i) && el.style[i] !== undefined) { 165 return transitions[i]; 166 } 167 } 168 169 return undefined; 170 } 171 } 172 173 function onBodyClick(){ 174 document.body.removeEventListener("click", onBodyClick); 175 document.body.removeEventListener("touchend", onBodyClick); 176 loadTour(); 177 } 178 179 function onLoad() { 180 if (isOVRWeb()){ 181 showPreloader(); 182 loadTour(); 183 return; 184 } 185 186 showPreloader(); 187 loadTour() 188 } 189 190 function playVideo(video) { 191 function isSafariDesktopV11orGreater() { 192 return /^((?!chrome|android|crios|ipad|iphone).)*safari/i.test(navigator.userAgent) && parseFloat(/Version\/([0-9]+\.[0-9]+)/i.exec(navigator.userAgent)[1]) >= 11; 193 } 194 195 function detectUserAction() { 196 var onVideoClick = function(e) { 197 if(video.paused) { 198 video.play(); 199 } 200 video.muted = false;
201 e.stopPropagation(); 202 e.stopImmediatePropagation(); 203 e.preventDefault(); 204 video.removeEventListener('click', onVideoClick); 205 video.removeEventListener('touchend', onVideoClick); 206 }; 207 video.addEventListener("click", onVideoClick); 208 video.addEventListener("touchend", onVideoClick); 209 } 210 211 if (isSafariDesktopV11orGreater()) { 212 video.muted = true; 213 video.play(); 214 } else { 215 var canPlay = true; 216 var promise = video.play(); 217 if (promise) { 218 promise.catch(function() { 219 video.muted = true; 220 video.play(); 221 detectUserAction(); 222 }); 223 } else { 224 canPlay = false; 225 } 226 227 if (!canPlay || video.muted) { 228 detectUserAction(); 229 } 230 } 231 } 232 233 function isOVRWeb(){ 234 return window.location.hash.substring(1).split('&').indexOf('ovrweb') > -1; 235 } 236 </script>
236 237 <style type="text/css"> 238 html, body { width: 100%; height: 100%; margin: 0; padding: 0; } 239 #viewer { background-color: #FFFFFF; z-index:1; position:absolute; width: 100%; height: 100%; top: 0; } 240 #preloadContainer { z-index:2; position:relative; width:100%; height:100%; transition: opacity 1s; -webkit-transition: opacity 1s; -moz-transition: opacity 1s; -o-transition: opacity 1s;} 241 </style> 242</head> 243<body onload="onLoad()"> 244 <div id="preloadContainer" style="background-color:rgba(255,255,255,1)"><div style="z-index: 4; position: absolute; background-image: url('loading/HTMLImage_34057DCD_2E86_F45B_41C5_84704A7848F4.png'); background-size: contain; background-repeat: no-repeat; background-position: center center; overflow: hidden; right: 36.12%; top: 19.81%; width: 28.81%; height: 28.45%"></div><div style="z-index: 5; position: absolute; left: 0%; top: 50%; width: 100.00%; height: 10.00%"><div style="text-align:left; color:#000; "><DIV STYLE="text-align:center;"><SPAN STYLE="letter-spacing:0px;color:#777777;font-size:14px;font-family:Arial, Helvetica, sans-serif;"><SPAN STYLE="font-size:20px;">Loading NUML virtual tour. Please wait...</SPAN></SPAN></DIV><p STYLE="margin:0; line-height:12px;"><BR STYLE="letter-spacing:0px;color:#000000;font-size:12px;font-family:Arial, Helvetica, sans-serif;"/></p></div></div></div> 245 <div id="viewer"></div> 246</body> 247</html>
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.