PageSourceSearch

https://termorad-360.netlify.app/

html termorad-360.netlify.app collected 2026-10-03 11:29:28 UTC 14,154 bytes, 342 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <title>Termorad</title>
5    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6<!-- This site is hosted on Netlify. Anyone can build and deploy a site
7     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=e23eadcd-bcdf-47c6-890a-96abe73480d4
8     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
9    <meta name="viewport" id="metaViewport" content="user-scalable=no, initial-scale=1, width=device-width, viewport-fit=cover" data-tdv-general-scale="0.5"/>
10    <meta name="apple-mobile-web-app-capable" content="yes"/>
11    <meta name="apple-mobile-web-app-status-bar-style" content="default">
12    <link rel="preload" href="locale/en.txt?v=1621429413729" as="fetch" crossorigin="anonymous"/>
13	<link rel="preload" href="script.js?v=1621429413729" as="script"/>
14	<link rel="preload" href="media/panorama_6600B914_6A6A_14CE_41D5_118FB7BB34D5_0/r/3/0_0.jpg?v=1621429413729" as="image"/>
15	<link rel="preload" href="media/panorama_6600B914_6A6A_14CE_41D5_118FB7BB34D5_0/l/3/0_0.jpg?v=1621429413729" as="image"/>
16	<link rel="preload" href="media/panorama_6600B914_6A6A_14CE_41D5_118FB7BB34D5_0/u/3/0_0.jpg?v=1621429413729" as="image"/>
17	<link rel="preload" href="media/panorama_6600B914_6A6A_14CE_41D5_118FB7BB34D5_0/d/3/0_0.jpg?v=1621429413729" as="image"/>
18	<link rel="preload" href="media/panorama_6600B914_6A6A_14CE_41D5_118FB7BB34D5_0/f/3/0_0.jpg?v=1621429413729" as="image"/>
19	<link rel="preload" href="media/panorama_6600B914_6A6A_14CE_41D5_118FB7BB34D5_0/b/3/0_0.jpg?v=1621429413729" as="image"/>
20	<meta name="description" content="Virtual Tour"/>
21	<meta name="theme-color" content="#FFFFFF"/>
22    
22<script src="lib/tdvplayer.js?v=1621429413729"></script>
22
23    
23<script src="script.js?v=1621429413729"></script>
23
24    
24<script type="text/javascript">
25        var tour;
26        var devicesUrl = {"mobile":"script_mobile.js?v=1621429413729","general":"script_general.js?v=1621429413729"};
27
28        (function()
29        {
30            var deviceType = ['general'];
31            if(TDV.PlayerAPI.mobile)
32                deviceType.unshift('mobile');
33            if(TDV.PlayerAPI.device == TDV.PlayerAPI.DEVICE_IPAD)
34                deviceType.unshift('ipad');
35            var url;
36            for(var i=0; i<deviceType.length; ++i) {
37                var d = deviceType[i];
38                if(d in devicesUrl) {
39                    url = devicesUrl[d];
40                    break;
41                }
42            }
43            if(typeof url == "object") {
44                var orient = TDV.PlayerAPI.getOrientation();
45                if(orient in url) {
46                    url = url[orient];
47                }
48            }
49            var link = document.createElement('link');
50            link.rel = 'preload';
51            link.href = url;
52            link.as = 'script';
53            var el = document.getElementsByTagName('script')[0];
54            el.parentNode.insertBefore(link, el);
55        })();
56
57        function loadTour()
58        {
59            if(tour) return;
60
61            var settings = new TDV.PlayerSettings();
62            settings.set(TDV.PlayerSettings.CONTAINER, document.getElementById('viewer'));
63            settings.set(TDV.PlayerSettings.WEBVR_POLYFILL_URL, 'lib/WebVRPolyfill.js?v=1621429413729');
64            settings.set(TDV.PlayerSettings.HLS_URL, 'lib/Hls.js?v=1621429413729');
65            settings.set(TDV.PlayerSettings.QUERY_STRING_PARAMETERS, 'v=1621429413729');
66
67            tour = new TDV.Tour(settings, devicesUrl);
68            tour.bind(TDV.Tour.EVENT_TOUR_INITIALIZED, onVirtualTourInit);
69            tour.bind(TDV.Tour.EVENT_TOUR_LOADED, onVirtualTourLoaded);
70            tour.bind(TDV.Tour.EVENT_TOUR_ENDED, onVirtualTourEnded);
71            tour.load();
72        }
73
74        function pauseTour()
75        {
76            if(!tour)
77                return;
78
79            tour.pause();
80        }
81
82        function resumeTour()
83        {
84            if(!tour)
85                return;
86
87            tour.resume();
88        }
89
90        function onVirtualTourInit()
91        {
92            var updateTexts = function() {
93                document.title = this.trans("tour.name")
94            };
95
96            tour.locManager.bind(TDV.Tour.LocaleManager.EVENT_LOCALE_CHANGED, updateTexts.bind(tour.locManager));
97            
98            if (tour.player.cookiesEnabled)
99                enableCookies();
100            else
101                tour.player.bind('enableCookies', enableCookies);
102        }
103
104        function onVirtualTourLoaded()
105        {
106            disposePreloader();
107        }
108
109        function onVirtualTourEnded()
110        {
111
112        }
113
114        function enableCookies()
115        {
116            
117        }
118
119        function setMediaByIndex(index) {
120            if(!tour)
121                return;
122
123            tour.setMediaByIndex(index);
124        }
125
126        function setMediaByName(name)
127        {
128            if(!tour)
129                return;
130
131            tour.setMediaByName(name);
132        }
133
134        function showPreloader()
135        {
136            var preloadContainer = document.getElementById('preloadContainer');
137            if(preloadContainer != undefined)
138                preloadContainer.style.opacity = 1;
139        }
140
141        function disposePreloader()
142        {
143            var preloadContainer = document.getElementById('preloadContainer');
144            if(preloadContainer == undefined)
145                return;
146
147            var transitionEndName = transitionEndEventName();
148            if(transitionEndName)
149            {
150                preloadContainer.addEventListener(transitionEndName, hide, false);
151                preloadContainer.style.opacity = 0;
152                setTimeout(hide, 500); //Force hide. Some cases the transitionend event isn't dispatched with an iFrame.
153            }
154            else
155            {
156                hide();
157            }
158
159            function hide()
160            {
161                
162                preloadContainer.style.visibility = 'hidden';
163                preloadContainer.style.display = 'none';
164                var videoList = preloadContainer.getElementsByTagName("video");
165                for(var i=0; i<videoList.length; ++i)
166                {
167                    var video = videoList[i];
168                    video.pause();
169                    while (video.children.length)
170                        video.removeChild(video.children[0]);
171                }
172            }
173
174            function transitionEndEventName () {
175                var el = document.createElement('div');
176                var transitions = {
177                        'transition':'transitionend',
178                        'OTransition':'otransitionend',
179                        'MozTransition':'transitionend',
180                        'WebkitTransition':'webkitTransitionEnd'
181                    };
182
183                var t;
184                for (t in transitions) {
185                    if (el.style[t] !== undefined) {
186                        return transitions[t];
187                    }
188                }
189
190                return undefined;
191            }
192        }
193
194        function onBodyClick(){
195            document.body.removeEventListener("click", onBodyClick);
196            document.body.removeEventListener("touchend", onBodyClick);
197            
198        }
199
200        function onLoad() {
201            if (/AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent))
202            {
203                var inIFrame = false;
204                try
205                {
206                    inIFrame = (window.self !== window.top);
207                }
208                catch (e)
209                {
210                    inIFrame = true;
211                }
212                if (!inIFrame)
213                {
214                    var onResize = function(async)
215                    {
216                        [0, 250, 1000, 2000].forEach(function(delay)
217                        {
218                            setTimeout(function()
219                            {
220                                var viewer = document.querySelector('#viewer');
221                                var scale = window.innerWidth / document.documentElement.clientWidth;
222                                var width = document.documentElement.clientWidth;
223                                var height = Math.round(window.innerHeight / scale);
224                                viewer.style.width = width + 'px';
225                                viewer.style.height = height + 'px';
226                                viewer.style.left = Math.round((window.innerWidth - width) * 0.5) + 'px';
227                                viewer.style.top = Math.round((window.innerHeight - height) * 0.5) + 'px';
228                                viewer.style.transform = 'scale(' + scale + ', ' + scale + ')';
229                                window.scrollTo(0,0);
230                            }, delay);
231                        });
232                    };
233                    var onTouchEnd = function()
234                    {
235                        document.body.removeEventListener("touchend", onTouchEnd);
236                        clearInterval(resizeIntervalId);
237                        onResize();
238                        if (/CriOS/.test(navigator.userAgent))
239                            setInterval(onResize, 4000);
240                    };
241                    document.body.addEventListener("touchend", onTouchEnd);
242                    var resizeIntervalId = setInterval(onResize, 300);
243                    window.addEventListener('resize', onResize);
244                    onResize();
245                }
246            }
247
248            var params = getParams(location.search.substr(1));
249            if(params.hasOwnProperty("skip-loading"))
250            {
251                loadTour();
252                disposePreloader();
253                return;
254            }
255
256            if (isOVRWeb()){
257                showPreloader();
258                loadTour();
259                return;
260            }
261
262            showPreloader();
263			loadTour();
264        }
265
266        function playVideo(video) {
267            function isSafariDesktopV11orGreater() {
268                return /^((?!chrome|android|crios|ipad|iphone).)*safari/i.test(navigator.userAgent) && parseFloat(/Version\/([0-9]+\.[0-9]+)/i.exec(navigator.userAgent)[1]) >= 11;
269            }
270
271            function hasAudio (video) {
272                return video.mozHasAudio ||
273                       Boolean(video.webkitAudioDecodedByteCount) ||
274                       Boolean(video.audioTracks && video.audioTracks.length);
275            }
276
277            function detectUserAction() {
278                var onVideoClick = function(e) {
279                    if(video.paused) {
280                        video.play();
281                    }
282                    video.muted = false;
283                    if(hasAudio(video))
284                    {
285                        e.stopPropagation();
286                        e.stopImmediatePropagation();
287                        e.preventDefault();
288                    }
289
290                    video.removeEventListener('click', onVideoClick);
291                    video.removeEventListener('touchend', onVideoClick);
292                };
293                video.addEventListener("click", onVideoClick);
294                video.addEventListener("touchend", onVideoClick);
295            }
296
297            if (isSafariDesktopV11orGreater()) {
298                video.muted = true;
299                video.play();
300            } else {
301                var canPlay = true;
302                var promise = video.play();
303                if (promise) {
304                    promise.catch(function() {
305                        video.muted = true;
306                        video.play();
307                        detectUserAction();
308                    });
309                } else {
310                    canPlay = false;
311                }
312
313                if (!canPlay || video.muted) {
314                    detectUserAction();
315                }
316            }
317        }
318
319        function isOVRWeb(){
320            return window.location.hash.substring(1).split('&').indexOf('ovrweb') > -1;
321        }
322
323        function getParams(params) {
324            var queryDict = {}; params.split("&").forEach(function(item) {var k = item.split("=")[0], v = decodeURIComponent(item.split("=")[1]);queryDict[k.toLowerCase()] = v});
325            return queryDict;
326        }
327
328        document.addEventListener('DOMContentLoaded', onLoad);
329    </script>
329
330    <style type="text/css">
331        html, body { width: 100%; height: 100%; margin: 0; padding: 0; padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); }
332
333        #viewer { z-index:1; position:absolute; width: 100%; height: 100%; top: 0; }
334        #preloadContainer { z-index:2; position:relative; width:100%; height:100%; opacity:0; background-color:rgba(255,255,255,1); transition: opacity 0.5s; -webkit-transition: opacity 0.5s; -moz-transition: opacity 0.5s; -o-transition: opacity 0.5s;}
335    </style>
336    <link rel="stylesheet" href="fonts.css?v=1621429413729">
337</head>
338<body>
339    <div id="preloadContainer"><div style="z-index: 4; position: absolute; background-image: url('loading/HTMLImage_65818801_4D3F_C1D0_41C2_61EBFDFE6978.gif'); background-size: contain; background-repeat: no-repeat; background-position: center center; overflow: hidden; right: 22.59%; bottom: 17.21%; width: 48.84%; height: 67.04%"></div><div style="z-index: 5; position: absolute; background-image: url('loading/HTMLImage_6A754024_57C4_4930_41C7_4AD4C1F4F032.png'); background-size: contain; background-repeat: no-repeat; background-position: center center; overflow: hidden; right: 32.6%; top: 27.59%; width: 29.37%; height: 7.60%"></div></div>
340    <div id="viewer"></div>
341</body>
342</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.