]> git.sesse.net Git - vlc/blob - projects/activex/test.html
Fix potential segfault.
[vlc] / projects / activex / test.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
2 <HTML>\r
3 <TITLE>VLC Plugin test page</TITLE>\r
4 <STYLE>\r
5   .inputTrackerInput {\r
6         height:20;\r
7         width:30;\r
8         font-family : Arial, Helvetica, sans-serif;\r
9         font-size : 12px;\r
10   }\r
11 </STYLE>\r
12 \r
13 <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/lib/LibCrossBrowser.js"></SCRIPT>\r
14 <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/lib/EventHandler.js"></SCRIPT>\r
15 <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/core/form/Bs_FormUtil.lib.js"></SCRIPT>\r
16 <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/components/slider/Bs_Slider.class.js"></SCRIPT>\r
17 \r
18 <SCRIPT language="JavaScript"><!--\r
19 function init(){\r
20     inputTracker = new Bs_Slider();\r
21     inputTracker.attachOnChange(onInputTrackerChange);\r
22     inputTracker.attachOnSlideStart(onInputTrackerScrollStart);\r
23     inputTracker.attachOnSlideEnd(onInputTrackerScrollEnd);\r
24     inputTracker.width         = 530 ;\r
25     inputTracker.height        = 15;\r
26     inputTracker.minVal        = 0;\r
27     inputTracker.maxVal        = 1.0;\r
28     inputTracker.valueDefault  = 0;\r
29     inputTracker.valueInterval = 1/530;\r
30     inputTracker.setDisabled(true);\r
31     inputTracker.imgDir   = 'blueshoes-4.5/javascript/components/slider/img/';\r
32     inputTracker.setBackgroundImage('aluminumalloyvolcanic/horizontal_background.gif', 'repeat');\r
33     inputTracker.setArrowIconLeft('aluminumalloyvolcanic/horizontal_backgroundLeft.gif', 2, 19);\r
34     inputTracker.setArrowIconRight('aluminumalloyvolcanic/horizontal_backgroundRight.gif', 2, 19);\r
35     inputTracker.setSliderIcon('aluminumalloyvolcanic/horizontal_knob.gif', 15, 19);\r
36     inputTracker.useInputField = 0;\r
37     inputTracker.draw('inputTrackerDiv');\r
38 \r
39     if( navigator.appName.indexOf("Microsoft Internet")==-1 )\r
40     {\r
41         onVLCPluginReady()\r
42     }\r
43     else if( document.readyState == 'complete' )\r
44     {\r
45         onVLCPluginReady();\r
46     }\r
47     else\r
48     {\r
49         /* Explorer loads plugins asynchronously */\r
50         document.onreadystatechange=function() {\r
51             if( document.readyState == 'complete' )\r
52             {\r
53                 onVLCPluginReady();\r
54             }\r
55         }\r
56     }\r
57 };\r
58 \r
59 function getVLC(name)\r
60 {\r
61     if (window.document[name]) \r
62     {\r
63         return window.document[name];\r
64     }\r
65     if (navigator.appName.indexOf("Microsoft Internet")==-1)\r
66     {\r
67         if (document.embeds && document.embeds[name])\r
68             return document.embeds[name]; \r
69     }\r
70     else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)\r
71     {\r
72         return document.getElementById(name);\r
73     }\r
74 };\r
75 \r
76 function onVLCPluginReady()\r
77 {\r
78     updateVolume(0);\r
79 };\r
80 \r
81 //--></SCRIPT>\r
82 \r
83 <BODY onLoad="init();">\r
84 <TABLE>\r
85 <TR><TD colspan="2">\r
86 MRL:\r
87 <INPUT size="90" id="targetTextField" value="">\r
88 <INPUT type=submit value="Go" onClick="doGo(document.getElementById('targetTextField').value);">\r
89 <INPUT type=submit value="Add" onClick="doAdd(document.getElementById('targetTextField').value);">\r
90 </TD></TR>\r
91 <TR><TD align="center" colspan="2">\r
92 <!--\r
93 Insert VideoLAN.VLCPlugin.2 \r
94 -->\r
95 <OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"\r
96         width="640"\r
97         height="480"\r
98         id="vlc"\r
99         events="True">\r
100 <param name="MRL" value="" />\r
101 <param name="ShowDisplay" value="True" />\r
102 <param name="AutoLoop" value="False" />\r
103 <param name="AutoPlay" value="False" />\r
104 <param name="Volume" value="50" />\r
105 <param name="StartTime" value="0" />\r
106 <EMBED pluginspage="http://www.videolan.org"\r
107        type="application/x-vlc-plugin"\r
108        version="VideoLAN.VLCPlugin.2"\r
109        width="640"\r
110        height="480"\r
111        name="vlc">\r
112 </EMBED>\r
113 </OBJECT>\r
114 </TD></TR>\r
115 <TR><TD colspan="2">\r
116 <TABLE><TR>\r
117 <TD valign="top" width="550">\r
118 <!--\r
119 Insert Slider widget\r
120 -->\r
121 <DIV id="inputTrackerDiv"</DIV>\r
122 </TD><TD width="15%">\r
123 <DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV>\r
124 <DIV id="state" style="text-align:center">Stopped...</DIV>\r
125 </TD></TR></TABLE>\r
126 </TD></TR>\r
127 <TR><TD>\r
128 <INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'>\r
129 <INPUT type=button value="Stop" onClick='doStop();'>\r
130 &nbsp;\r
131 <INPUT type=button value=" << " onClick='doPlaySlower();'>\r
132 <INPUT type=button value=" >> " onClick='doPlayFaster();'>\r
133 <INPUT type=button value="Backward" onClick='doBackwardPlay(500);'>\r
134 <INPUT type=button value="Forward" onClick='doForwardPlay(500);'>\r
135 <INPUT type=button value="Fullscreen" onClick='getVLC("vlc").video.toggleFullscreen();'>\r
136 <INPUT type=button value="Version" onClick='alert("vlc " + getVLC("vlc").VersionInfo);'>\r
137 <INPUT type=button value=" State " onClick='doState();'>\r
138 </TD><TD align="right"> \r
139 <SPAN style="text-align:center">Volume:</SPAN>\r
140 <INPUT type=button value=" - " onClick='updateVolume(-10)'>\r
141 <SPAN id="volumeTextField" style="text-align:center">--</SPAN>\r
142 <INPUT type=button value=" + " onClick='updateVolume(+10)'>\r
143 <INPUT type=button value="Mute" onClick='getVLC("vlc").audio.toggleMute();'>\r
144 </TD>\r
145 </TR>\r
146 <TR><TD>Playlist: \r
147 <INPUT type=button value="Prev" onClick='getVLC("vlc").playlist.prev();'>\r
148 <INPUT type=button value="Next" onClick='getVLC("vlc").playlist.next();'>\r
149 <INPUT type=button value="Clear All" onClick='getVLC("vlc").playlist.clear(); doItemCount();'>\r
150 <INPUT size=4 value="1:1" id="aspect"><INPUT type=submit value="AspectRatio" onClick="doAspectRatio(document.getElementById('aspect').value);">\r
151 </TD><TD align="right">\r
152 <INPUT type=button id="itemCount" value=" Items 0 " onClick='doItemCount();'>\r
153 <INPUT size=4 value="" id="removeid"><INPUT type=submit value="Delete" onClick="doRemoveItem(document.getElementById('removeid').value);">\r
154 </TD>\r
155 </TR>\r
156 <TR><TD>Messages:\r
157 <INPUT type=button value="Messages" onClick='doMessages();'>\r
158 Verbosity:\r
159 <INPUT size=2 value="1" id="verbosity" onClick="doVerbosity(document.getElementById('verbosity').value);">\r
160 <INPUT type=button value=" + " onClick='doVerbosity(1);'>\r
161 <INPUT type=button value=" - " onClick='doVerbosity(-1);'>\r
162 </TD>\r
163 <TD>\r
164 <DIV id="message" style="text-align:center">no message</DIV>\r
165 </TD>\r
166 </TR>\r
167 <TR><TD>Audio Channel:\r
168   <SELECT readonly onClick='doAudioChannel(this.value);'>\r
169     <OPTION value=1>Stereo</OPTION>\r
170     <OPTION value=2>Reverse Stereo</OPTION>\r
171     <OPTION value=3>Left</OPTION>\r
172     <OPTION value=4>Right</OPTION>\r
173     <OPTION value=5>Dolby</OPTION>\r
174   </SELECT>\r
175 </TD>\r
176 <TD>\r
177 <INPUT type=button value="current channel" onClick='alert(getVLC("vlc").audio.channel);'>\r
178 </TD>\r
179 </TR>\r
180 <TR><TD> Audio Track:\r
181 <INPUT type=button value=" + " onClick='doAudioTrack(1);'>\r
182 <SPAN id="trackTextField" style="text-align:center">--</SPAN>\r
183 <INPUT type=button value=" - " onClick='doAudioTrack(-1);'>\r
184 </TD>\r
185 <TD>\r
186 <INPUT type=button value="set slider" onClick='doSetSlider();'>\r
187 <INPUT type=button value="get position" onClick='doGetPosition();'>\r
188 </TD>\r
189 </TR>\r
190 </TABLE>\r
191 <SCRIPT language="javascript">\r
192 <!--\r
193 \r
194 var rate = 0;\r
195 var prevState = 0;\r
196 var monitorTimerId = 0;\r
197 var rateTimerId = 0;\r
198 var inputTrackerScrolling = false;\r
199 var inputTrackerIgnoreChange = false;\r
200 \r
201 function doSetSlider()\r
202 {\r
203    var vlc = getVLC("vlc");\r
204 \r
205    if (vlc.input)\r
206    {\r
207      // set slider to new position\r
208      vlc.input.time = (vlc.input.length/2);\r
209    }\r
210 };\r
211 \r
212 function doGetPosition()\r
213 {\r
214    var vlc = getVLC("vlc");\r
215 \r
216    if (vlc.input)\r
217    {\r
218      // set slider to new position\r
219      alert( "position is " + vlc.input.time);\r
220    }\r
221 };\r
222 \r
223 function doForwardPlay(speed)\r
224 {\r
225    if (rateTimerId == 0)\r
226    {\r
227        rateTimerId = setInterval("ratechange()", speed);\r
228        rate = speed;\r
229    }\r
230    else rate = rate + speed;\r
231 };\r
232 \r
233 function doBackwardPlay(speed)\r
234 {\r
235    if (rateTimerId == 0)\r
236    {\r
237        rateTimerId = setInterval("ratechange()", speed);\r
238        rate = -speed;\r
239    }\r
240    else rate = rate - speed;\r
241 };\r
242 \r
243 function ratechange()\r
244 {\r
245     if (rateTimerId != 0)\r
246     {\r
247         var vlc = getVLC("vlc");\r
248         vlc.input.time = vlc.input.time + rate;\r
249     }\r
250 };\r
251 \r
252 function doVerbosity(value)\r
253 {\r
254     var vlc = getVLC("vlc");\r
255     vlc.log.verbosity = vlc.log.verbosity + value;\r
256     document.getElementById("verbosity").value = vlc.log.verbosity;\r
257 };\r
258 \r
259 function doAudioChannel(value)\r
260 {\r
261     var vlc = getVLC("vlc");\r
262     vlc.audio.channel = parseInt(value);\r
263 };\r
264 \r
265 function doAudioTrack(value)\r
266 {\r
267     var vlc = getVLC("vlc");\r
268     vlc.audio.track = vlc.audio.track + value;\r
269     document.getElementById("trackTextField").innerHTML = vlc.audio.track;\r
270 };\r
271 \r
272 function doAspectRatio(value)\r
273 {\r
274    var vlc = getVLC("vlc");\r
275    vlc.video.aspectRatio = value;\r
276    document.getElementById("aspect").value = vlc.video.aspectRatio;\r
277 }\r
278 \r
279 function doItemCount()\r
280 {\r
281    var vlc = getVLC("vlc");\r
282    var count = vlc.playlist.itemCount;\r
283    document.getElementById("itemCount").value = " Items " + count + " ";\r
284 };\r
285 \r
286 function doRemoveItem(item)\r
287 {\r
288    var vlc = getVLC("vlc");\r
289    vlc.playlist.removeItem(item);\r
290 };\r
291 \r
292 function doMessages()\r
293 {\r
294     var vlc = getVLC("vlc");\r
295 \r
296     if( vlc.log.messages.count > 0 )\r
297     {\r
298         // there is one or more messages in the log\r
299         var iter = vlc.log.messages.iterator();\r
300         while( iter.hasNext )\r
301         {\r
302             var msg = iter.next();\r
303             if( msg.severity <= 1 )\r
304             {\r
305                 document.getElementById("message").innerHTML = msg.message;\r
306             }\r
307         }\r
308         // clear the log once finished to avoid clogging\r
309         vlc.log.messages.clear();\r
310     }\r
311 };\r
312 \r
313 function updateVolume(deltaVol)\r
314 {\r
315     var vlc = getVLC("vlc");\r
316     vlc.audio.volume += deltaVol;\r
317     document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";\r
318 };\r
319 \r
320 function formatTime(timeVal)\r
321 {\r
322     var timeHour = Math.round(timeVal / 1000);\r
323     var timeSec = timeHour % 60;\r
324     if( timeSec < 10 )\r
325         timeSec = '0'+timeSec;\r
326     timeHour = (timeHour - timeSec)/60;\r
327     var timeMin = timeHour % 60;\r
328     if( timeMin < 10 )\r
329         timeMin = '0'+timeMin;\r
330     timeHour = (timeHour - timeMin)/60;\r
331     if( timeHour > 0 )\r
332         return timeHour+":"+timeMin+":"+timeSec;\r
333     else\r
334         return timeMin+":"+timeSec;\r
335 };\r
336 \r
337 function doState()\r
338 {\r
339     var vlc = getVLC("vlc");\r
340     var newState = vlc.input.state;\r
341 \r
342     if( newState == 0 )\r
343     {\r
344         // current media has stopped \r
345         onEnd();\r
346     }\r
347     else if( newState == 1 )\r
348     {\r
349         // current media is openning/connecting\r
350         onOpen();\r
351     }\r
352     else if( newState == 2 )\r
353     {\r
354         // current media is buffering data\r
355         onBuffer();\r
356     }\r
357     else if( newState == 3 )\r
358     {\r
359         // current media is now playing\r
360         onPlay();\r
361     }\r
362     else if( newState == 4 )\r
363     {\r
364         // current media is now paused\r
365         onPause();\r
366     }\r
367     else if( newState == 5 )\r
368     {\r
369         // current media has stopped\r
370         onStop();\r
371     }\r
372     else if( newState == 6 )\r
373     {\r
374         // current media is playing forward\r
375         onForward();\r
376     }\r
377     else if( newState == 7 )\r
378     {\r
379         // current media is playing backward\r
380         onBackward();\r
381     }\r
382     else if( newState == 8 )\r
383     {\r
384         // current media has ended\r
385         onEnd();\r
386     }\r
387     else if( newState == 9 )\r
388     {\r
389         // current media encountered error\r
390         onError();\r
391     }\r
392 };\r
393 \r
394 function monitor()\r
395 {\r
396     var vlc = getVLC("vlc");\r
397     var newState = vlc.input.state;\r
398 \r
399     if( vlc.log.messages.count > 0 )\r
400     {\r
401         // there is one or more messages in the log\r
402         var iter = vlc.log.messages.iterator();\r
403         while( iter.hasNext )\r
404         {\r
405             var msg = iter.next();\r
406             if( msg.severity == 1 )\r
407             {\r
408                 alert( msg.message );\r
409             }\r
410             document.getElementById("message").innerHTML = msg.message;\r
411         }\r
412         // clear the log once finished to avoid clogging\r
413         vlc.log.messages.clear();\r
414     }\r
415 \r
416     if( prevState != newState )\r
417     {\r
418         if( newState == 0 )\r
419         {\r
420             // current media has stopped \r
421             onEnd();\r
422         }\r
423         else if( newState == 1 )\r
424         {\r
425             // current media is openning/connecting\r
426             onOpen();\r
427         }\r
428         else if( newState == 2 )\r
429         {\r
430             // current media is buffering data\r
431             onBuffer();\r
432         }\r
433         else if( newState == 3 )\r
434         {\r
435             // current media is now playing\r
436             onPlay();\r
437         }\r
438         else if( newState == 4 )\r
439         {\r
440             // current media is now paused\r
441             onPause();\r
442         }\r
443         else if( newState == 5 )\r
444         {\r
445             // current media has stopped\r
446             onStop();\r
447         }\r
448         else if( newState == 6 )\r
449         {\r
450             // current media is playing forward\r
451             onForward();\r
452         }\r
453         else if( newState == 7 )\r
454         {\r
455             // current media is playing backward\r
456             onBackward();\r
457         }\r
458         else if( newState == 8 )\r
459         {\r
460             // current media has ended\r
461             onEnd();\r
462         }\r
463         else if( newState == 9 )\r
464         {\r
465             // current media encountered error\r
466             onError();\r
467         }\r
468         prevState = newState;\r
469     }\r
470     else if( newState == 3 )\r
471     {\r
472         // current media is playing\r
473         onPlaying();\r
474     }\r
475     if( monitorTimerId == 0 )\r
476     {\r
477         monitorTimerId = setInterval("monitor()", 1000);\r
478     }\r
479 };\r
480 \r
481 /* actions */\r
482 \r
483 function doGo(targetURL)\r
484 {\r
485     var vlc = getVLC("vlc");\r
486 \r
487     vlc.playlist.clear();\r
488     while( vlc.playlist.itemCount > 0 )\r
489     {\r
490         // clear() may return before the playlist has actually been cleared\r
491         // just wait for it to finish its job\r
492     }\r
493     //vlc.playlist.add(targetURL);\r
494     //vlc.playlist.play();\r
495 \r
496     var itemId = vlc.playlist.add(targetURL);\r
497     if( itemId != -1 )\r
498     {\r
499         // clear the message log and enable error logging\r
500         vlc.log.verbosity = 1;\r
501         vlc.log.messages.clear();\r
502         // play MRL\r
503         vlc.playlist.play();\r
504         if( monitorTimerId == 0 )\r
505         {\r
506             monitor();\r
507         }\r
508     }\r
509     else\r
510     {\r
511         // disable log\r
512         vlc.log.verbosity = -1;\r
513         alert("cannot play at the moment !");\r
514     }\r
515     doItemCount();\r
516 \r
517     if (rateTimerId != 0)\r
518     {\r
519         clearInterval("ratechange()");\r
520     }\r
521     rateTimerId = 0;\r
522 };\r
523 \r
524 function doAdd(targetURL)\r
525 {\r
526     var vlc = getVLC("vlc");\r
527     var options = new Array(":vout-filter=deinterlace", ":deinterlace-mode=linear");\r
528     vlc.playlist.add(targetURL);\r
529     doItemCount();\r
530 };\r
531 \r
532 function doPlayOrPause()\r
533 {\r
534     var vlc = getVLC("vlc");\r
535     if( vlc.playlist.isPlaying )\r
536     {\r
537         vlc.playlist.togglePause();\r
538         monitor();\r
539     }\r
540     else if( vlc.playlist.itemCount > 0 )\r
541     {\r
542         // clear the message log and enable error logging\r
543         vlc.log.verbosity = 1;\r
544         vlc.log.messages.clear();\r
545         vlc.playlist.play();\r
546         monitor();\r
547     }\r
548     else\r
549     {\r
550         // disable log\r
551         vlc.log.verbosity = -1;\r
552         alert('nothing to play !');\r
553     }\r
554     if (rateTimerId != 0)\r
555     {\r
556         clearInterval("ratechange()");\r
557     }\r
558     rateTimerId = 0;\r
559 };\r
560 \r
561 function doStop()\r
562 {\r
563     getVLC("vlc").playlist.stop();\r
564     if( monitorTimerId != 0 )\r
565     {\r
566         clearInterval(monitorTimerId);\r
567         monitorTimerId = 0;\r
568     }\r
569     onStop();\r
570 };\r
571 \r
572 function doPlaySlower()\r
573 {\r
574     var vlc = getVLC("vlc");\r
575     vlc.input.rate = vlc.input.rate / 2;\r
576 };\r
577 \r
578 function doPlayFaster()\r
579 {\r
580     var vlc = getVLC("vlc");\r
581     vlc.input.rate = vlc.input.rate * 2;\r
582 };\r
583 \r
584 /* events */\r
585 \r
586 function onOpen()\r
587 {\r
588     document.getElementById("state").innerHTML = "Opening...";\r
589     document.getElementById("PlayOrPause").value = "Pause";\r
590 };\r
591 \r
592 function onBuffer()\r
593 {\r
594     document.getElementById("state").innerHTML = "Buffering...";\r
595     document.getElementById("PlayOrPause").value = "Pause";\r
596 };\r
597 \r
598 function onPlay()\r
599 {\r
600     document.getElementById("state").innerHTML = "Playing...";\r
601     document.getElementById("PlayOrPause").value = "Pause";\r
602     onPlaying();\r
603 };\r
604 \r
605 function onForward()\r
606 {   // Event is reserved for future enhancements\r
607     document.getElementById("state").innerHTML = "Forward playing...";\r
608 };\r
609 \r
610 function onBackward()\r
611 {   // Event is reserved for future enhancements\r
612     document.getElementById("state").innerHTML = "Backward playing...";\r
613 };\r
614 \r
615 function onEnd()\r
616 {\r
617     document.getElementById("state").innerHTML = "End...";\r
618 };\r
619 \r
620 \r
621 var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "((  Live  ))");\r
622 var liveFeedRoll = 0;\r
623 \r
624 function onPlaying()\r
625 {\r
626     if( ! inputTrackerScrolling )\r
627     {\r
628         var vlc = getVLC("vlc");\r
629         var info = document.getElementById("info");\r
630         var mediaLen = vlc.input.length;\r
631         inputTrackerIgnoreChange  = true;\r
632         if( mediaLen > 0 )\r
633         {\r
634             // seekable media\r
635             if( inputTracker.maxVal == 1.0 )\r
636             {\r
637                 inputTracker.setDisabled(false);\r
638                 inputTracker.maxVal = 1.0;\r
639             }\r
640             inputTracker.setValue(vlc.input.position);\r
641             info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(mediaLen);\r
642         }\r
643         else\r
644         {\r
645             // non-seekable "live" media\r
646             if( inputTracker.maxVal != 0.0 )\r
647             {\r
648                 inputTracker.maxVal = 0.0;\r
649                 inputTracker.setValue(0.0);\r
650                 inputTracker.setDisabled(true);\r
651             }\r
652             liveFeedRoll = liveFeedRoll & 3;\r
653             info.innerHTML = liveFeedText[liveFeedRoll++];\r
654         }\r
655         inputTrackerIgnoreChange  = false;\r
656     }\r
657 };\r
658 \r
659 function onPause()\r
660 {\r
661     document.getElementById("state").innerHTML = "Paused...";\r
662     document.getElementById("PlayOrPause").value = " Play ";\r
663 };\r
664 \r
665 function onStop()\r
666 {\r
667     // disable logging\r
668     vlc.log.verbosity = -1;\r
669 \r
670     if( ! inputTracker.disabled )\r
671     {\r
672         inputTracker.setValue(inputTracker.minVal);\r
673         inputTracker.setDisabled(true);\r
674     }\r
675     document.getElementById("info").innerHTML = "-:--:--/-:--:--";\r
676     document.getElementById("state").innerHTML = "Stopped...";\r
677     document.getElementById("PlayOrPause").value = " Play ";\r
678 };\r
679 \r
680 function onError()\r
681 {\r
682     var vlc = getVLC("vlc");\r
683 \r
684     document.getElementById("state").innerHTML = "Error...";\r
685     if( vlc.log.messages.count > 0 )\r
686     {\r
687         // there is one or more messages in the log\r
688         var iter = vlc.log.messages.iterator();\r
689         while( iter.hasNext )\r
690         {\r
691             var msg = iter.next();\r
692             if( msg.severity <= 1 )\r
693             {\r
694                 alert( msg.message );\r
695             }\r
696             document.getElementById("message").innerHTML = msg.message;\r
697         }\r
698         // clear the log once finished to avoid clogging\r
699         vlc.log.messages.clear();\r
700     }\r
701 };\r
702 \r
703 function onInputTrackerScrollStart()\r
704 {\r
705     inputTrackerScrolling = true;\r
706 };\r
707 \r
708 function onInputTrackerScrollEnd(inputTracker, value, pos)\r
709 {\r
710     inputTrackerScrolling = false;\r
711 };\r
712 \r
713 function onInputTrackerChange(inputTracker, value, pos)\r
714 {\r
715     if( ! inputTrackerIgnoreChange )\r
716     {\r
717         var vlc = getVLC("vlc");\r
718         if( (vlc.input.state == 3) && (vlc.input.position != value) )\r
719         {\r
720             var info = document.getElementById("info");\r
721             vlc.input.position = value;\r
722             info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
723         }\r
724     }\r
725 };\r
726 //-->\r
727 </SCRIPT>\r
728 </BODY>\r
729 </HTML>\r