PageSourceSearch

https://numl.edu.pk/virtualTour/

html numl.edu.pk collected 2026-10-02 17:41:53 UTC 10,368 bytes, 247 lines download raw bytes

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.