]> git.sesse.net Git - vlc/blob - projects/mozilla/test.html
mozilla: protect calls to libvlc_playlist_isplaying()
[vlc] / projects / mozilla / 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="toolbar" value="true" />\r
106 <param name="StartTime" value="0" />\r
107 <EMBED pluginspage="http://www.videolan.org"\r
108        type="application/x-vlc-plugin"\r
109        version="VideoLAN.VLCPlugin.2"\r
110        width="640"\r
111        height="480"\r
112        toolbar="true"\r
113        name="vlc">\r
114 </EMBED>\r
115 </OBJECT>\r
116 </TD></TR>\r
117 <TR><TD colspan="2">\r
118 <TABLE><TR>\r
119 <TD valign="top" width="550">\r
120 <!--\r
121 Insert Slider widget\r
122 -->\r
123 <DIV id="inputTrackerDiv"</DIV>\r
124 </TD><TD width="15%">\r
125 <DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV>\r
126 <DIV id="state" style="text-align:center">Stopped...</DIV>\r
127 </TD></TR></TABLE>\r
128 </TD></TR>\r
129 <TR><TD>\r
130 <INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'>\r
131 <INPUT type=button value="Stop" onClick='doStop();'>\r
132 &nbsp;\r
133 <INPUT type=button value=" << " onClick='doPlaySlower();'>\r
134 <INPUT type=button value=" >> " onClick='doPlayFaster();'>\r
135 <INPUT type=button value="Backward" onClick='doBackwardPlay(500);'>\r
136 <INPUT type=button value="Forward" onClick='doForwardPlay(500);'>\r
137 <INPUT type=button value="Fullscreen" onClick='getVLC("vlc").video.toggleFullscreen();'>\r
138 <INPUT type=button value="Version" onClick='alert("vlc " + getVLC("vlc").VersionInfo);'>\r
139 <INPUT type=button value=" State " onClick='alert("state: " + getVLC("vlc").input.state);'>
140 </TD><TD align="right">\r
141 <SPAN style="text-align:center">Volume:</SPAN>\r
142 <INPUT type=button value=" - " onClick='updateVolume(-10)'>\r
143 <SPAN id="volumeTextField" style="text-align:center">--</SPAN>\r
144 <INPUT type=button value=" + " onClick='updateVolume(+10)'>\r
145 <INPUT type=button value="Mute" onClick='getVLC("vlc").audio.toggleMute();'>\r
146 </TD>\r
147 </TR>\r
148 <TR><TD>Playlist:\r
149 <INPUT type=button value="Prev" onClick='getVLC("vlc").playlist.prev();'>\r
150 <INPUT type=button value="Next" onClick='getVLC("vlc").playlist.next();'>\r
151 <INPUT type=button value="Clear All" onClick='getVLC("vlc").playlist.clear(); doItemCount();'>\r
152     Aspect Ratio:\r
153     <SELECT readonly onChange='doAspectRatio(this.value)'>\r
154       <OPTION value="default">Default</OPTION>\r
155       <OPTION value="1:1">1:1</OPTION>\r
156       <OPTION value="4:3">4:3</OPTION>\r
157       <OPTION value="16:9">16:9</OPTION>\r
158       <OPTION value="221:100">221:100</OPTION>\r
159       <OPTION value="5:4">5:4</OPTION>\r
160     </SELECT>\r
161 </TD><TD align="right">\r
162 <INPUT type=button id="itemCount" value=" Items 0 " onClick='doItemCount();'>\r
163 <INPUT size=4 value="" id="removeid"><INPUT type=submit value="Delete" onClick="doRemoveItem(document.getElementById('removeid').value);">\r
164 </TD>\r
165 </TR>\r
166 <TR><TD>Messages:\r
167 <INPUT type=button value="Messages" onClick='doMessages();'>\r
168 Verbosity:\r
169 <INPUT size=2 value="1" id="verbosity" onClick="doVerbosity(document.getElementById('verbosity').value);">\r
170 <INPUT type=button value=" + " onClick='doVerbosity(1);'>\r
171 <INPUT type=button value=" - " onClick='doVerbosity(-1);'>\r
172 </TD>\r
173 <TD>\r
174 <DIV id="message" style="text-align:center">no message</DIV>\r
175 </TD>\r
176 </TR>\r
177 <TR><TD>Audio Channel:\r
178   <SELECT readonly onClick='doAudioChannel(this.value);'>\r
179     <OPTION value=1>Stereo</OPTION>\r
180     <OPTION value=2>Reverse Stereo</OPTION>\r
181     <OPTION value=3>Left</OPTION>\r
182     <OPTION value=4>Right</OPTION>\r
183     <OPTION value=5>Dolby</OPTION>\r
184   </SELECT>\r
185 </TD>\r
186 <TD>\r
187 <INPUT type=button value="current channel" onClick='alert(getVLC("vlc").audio.channel);'>\r
188 </TD>\r
189 </TR>\r
190 <TR><TD> Audio Track:\r
191 <INPUT type=button value=" + " onClick='doAudioTrack(1);'>\r
192 <SPAN id="trackTextField" style="text-align:center">--</SPAN>\r
193 <INPUT type=button value=" - " onClick='doAudioTrack(-1);'>\r
194 </TD>\r
195 <TD>\r
196 <INPUT type=button value="set slider" onClick='doSetSlider();'>\r
197 <INPUT type=button value="get position" onClick='doGetPosition();'>\r
198 </TD>\r
199 </TR>\r
200 <TR>\r
201 <TD>Video Subtitle:\r
202     <INPUT type=button value=" + " onClick='doSubtitle(1);'>\r
203     <SPAN id="spuTextField" style="text-align:center">--</SPAN>\r
204     <INPUT type=button value=" - " onClick='doSubtitle(-1);'>\r
205 </TD>\r
206 </TR>\r
207 <TR>\r
208 <TD>\r
209     <INPUT type=button id="telx" value="Teletext off" onClick='doToggleTeletext();'>\r
210     Teletext page:\r
211     <INPUT size=4 value="100" id="telxPage" onClick='doTelxPage(document.getElementById("telxPage").value);'>\r
212 </TD>\r
213 </TR>\r
214 </TABLE>\r
215 <SCRIPT language="javascript">\r
216 <!--\r
217 \r
218 var rate = 0;\r
219 var prevState = 0;\r
220 var monitorTimerId = 0;\r
221 var rateTimerId = 0;\r
222 var inputTrackerScrolling = false;\r
223 var inputTrackerIgnoreChange = false;\r
224 var telxState = false;\r
225 \r
226 function doSetSlider()\r
227 {\r
228    var vlc = getVLC("vlc");\r
229 \r
230    if (vlc.input)\r
231    {\r
232      // set slider to new position\r
233      vlc.input.time = (vlc.input.length/2);\r
234    }\r
235 };\r
236 \r
237 function doGetPosition()\r
238 {\r
239    var vlc = getVLC("vlc");\r
240 \r
241    if (vlc.input)\r
242    {\r
243      // set slider to new position\r
244      alert( "position is " + vlc.input.time);\r
245    }\r
246 };\r
247 \r
248 function doForwardPlay(speed)\r
249 {\r
250    if (rateTimerId == 0)\r
251    {\r
252        rateTimerId = setInterval("ratechange()", speed);\r
253        rate = speed;\r
254    }\r
255    else rate = rate + speed;\r
256 };\r
257 \r
258 function doBackwardPlay(speed)\r
259 {\r
260    if (rateTimerId == 0)\r
261    {\r
262        rateTimerId = setInterval("ratechange()", speed);\r
263        rate = -speed;\r
264    }\r
265    else rate = rate - speed;\r
266 };\r
267 \r
268 function ratechange()\r
269 {\r
270     if (rateTimerId != 0)\r
271     {\r
272         var vlc = getVLC("vlc");\r
273         vlc.input.time = vlc.input.time + rate;\r
274     }\r
275 };\r
276 \r
277 function doVerbosity(value)\r
278 {\r
279     var vlc = getVLC("vlc");\r
280     vlc.log.verbosity = vlc.log.verbosity + value;\r
281     document.getElementById("verbosity").value = vlc.log.verbosity;\r
282 };\r
283 \r
284 function doAudioChannel(value)\r
285 {\r
286     var vlc = getVLC("vlc");\r
287     vlc.audio.channel = parseInt(value);\r
288 };\r
289 \r
290 function doAudioTrack(value)\r
291 {\r
292     var vlc = getVLC("vlc");\r
293     vlc.audio.track = vlc.audio.track + value;\r
294     document.getElementById("trackTextField").innerHTML = vlc.audio.track;\r
295 };\r
296 \r
297 function doAspectRatio(value)\r
298 {\r
299    var vlc = getVLC("vlc");\r
300    vlc.video.aspectRatio = value;\r
301 };\r
302 \r
303 function doSubtitle(value)\r
304 {\r
305     var vlc = getVLC("vlc");\r
306     vlc.video.subtitle = vlc.video.subtitle + value;\r
307     document.getElementById("spuTextField").innerHTML = vlc.video.subtitle;\r
308 };\r
309 \r
310 function doTelxPage(value)\r
311 {\r
312     var vlc = getVLC("vlc");\r
313     vlc.video.teletext = parseInt(value);\r
314 };\r
315 \r
316 function doToggleTeletext()\r
317 {\r
318     var vlc = getVLC("vlc");\r
319 \r
320     vlc.video.toggleTeletext();\r
321     if (telxState)\r
322     {\r
323         document.getElementById("telx").innerHTML = "Teletext on";\r
324         telxState = true;\r
325     }\r
326     else\r
327     {\r
328         document.getElementById("telx").innerHTML = "Teletext off";\r
329         telxState = false;\r
330     }\r
331 }\r
332 \r
333 function doItemCount()\r
334 {\r
335    var vlc = getVLC("vlc");\r
336    var count = vlc.playlist.itemCount;\r
337    document.getElementById("itemCount").value = " Items " + count + " ";\r
338 };\r
339 \r
340 function doRemoveItem(item)\r
341 {\r
342    var vlc = getVLC("vlc");\r
343    vlc.playlist.removeItem(item);\r
344 };\r
345 \r
346 function doMessages()\r
347 {\r
348     var vlc = getVLC("vlc");\r
349 \r
350     if( vlc.log.messages.count > 0 )\r
351     {\r
352         // there is one or more messages in the log\r
353         var iter = vlc.log.messages.iterator();\r
354         while( iter.hasNext )\r
355         {\r
356             var msg = iter.next();\r
357             if( msg.severity <= 1 )\r
358             {\r
359                 document.getElementById("message").innerHTML = msg.message;\r
360             }\r
361         }\r
362         // clear the log once finished to avoid clogging\r
363         vlc.log.messages.clear();\r
364     }\r
365 };\r
366 \r
367 function updateVolume(deltaVol)\r
368 {\r
369     var vlc = getVLC("vlc");\r
370     vlc.audio.volume += deltaVol;\r
371     document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";\r
372 };\r
373 \r
374 function formatTime(timeVal)\r
375 {\r
376     var timeHour = Math.round(timeVal / 1000);\r
377     var timeSec = timeHour % 60;\r
378     if( timeSec < 10 )\r
379         timeSec = '0'+timeSec;\r
380     timeHour = (timeHour - timeSec)/60;\r
381     var timeMin = timeHour % 60;\r
382     if( timeMin < 10 )\r
383         timeMin = '0'+timeMin;\r
384     timeHour = (timeHour - timeMin)/60;\r
385     if( timeHour > 0 )\r
386         return timeHour+":"+timeMin+":"+timeSec;\r
387     else\r
388         return timeMin+":"+timeSec;\r
389 };\r
390 \r
391 function doState()\r
392 {\r
393     var vlc = getVLC("vlc");\r
394     var newState = vlc.input.state;\r
395 \r
396     if( newState == 0 )\r
397     {\r
398         // current media has stopped\r
399         onEnd();\r
400     }\r
401     else if( newState == 1 )\r
402     {\r
403         // current media is openning/connecting\r
404         onOpen();\r
405     }\r
406     else if( newState == 2 )\r
407     {\r
408         // current media is buffering data\r
409         onBuffer();\r
410     }\r
411     else if( newState == 3 )\r
412     {\r
413         // current media is now playing\r
414         onPlay();\r
415     }\r
416     else if( newState == 4 )\r
417     {\r
418         // current media is now paused\r
419         onPause();\r
420     }\r
421     else if( newState == 5 )\r
422     {\r
423         // current media has stopped\r
424         onStop();\r
425     }\r
426     else if( newState == 6 )\r
427     {\r
428         // current media is playing forward\r
429         onForward();\r
430     }\r
431     else if( newState == 7 )\r
432     {\r
433         // current media is playing backward\r
434         onBackward();\r
435     }\r
436     else if( newState == 8 )\r
437     {\r
438         // current media has ended\r
439         onEnd();\r
440     }\r
441     else if( newState == 9 )\r
442     {\r
443         // current media encountered error\r
444         onError();\r
445     }\r
446 };\r
447 \r
448 function monitor()\r
449 {\r
450     var vlc = getVLC("vlc");\r
451     var newState = vlc.input.state;\r
452 \r
453     if( vlc.log.messages.count > 0 )\r
454     {\r
455         // there is one or more messages in the log\r
456         var iter = vlc.log.messages.iterator();\r
457         while( iter.hasNext )\r
458         {\r
459             var msg = iter.next();\r
460             if( msg.severity == 1 )\r
461             {\r
462                 alert( msg.message );\r
463             }\r
464             document.getElementById("message").innerHTML = msg.message;\r
465         }\r
466         // clear the log once finished to avoid clogging\r
467         vlc.log.messages.clear();\r
468     }\r
469 \r
470     if( prevState != newState )\r
471     {\r
472         if( newState == 0 )\r
473         {\r
474             // current media has stopped\r
475             onEnd();\r
476         }\r
477         else if( newState == 1 )\r
478         {\r
479             // current media is openning/connecting\r
480             onOpen();\r
481         }\r
482         else if( newState == 2 )\r
483         {\r
484             // current media is buffering data\r
485             onBuffer();\r
486         }\r
487         else if( newState == 3 )\r
488         {\r
489             // current media is now playing\r
490             onPlay();\r
491         }\r
492         else if( newState == 4 )\r
493         {\r
494             // current media is now paused\r
495             onPause();\r
496         }\r
497         else if( newState == 5 )\r
498         {\r
499             // current media has stopped\r
500                 onStop();\r
501         }\r
502         else if( newState == 6 )\r
503         {\r
504             // current media is playing forward\r
505             onForward();\r
506         }\r
507         else if( newState == 7 )\r
508         {\r
509             // current media is playing backward\r
510             onBackward();\r
511         }\r
512         else if( newState == 8 )\r
513         {\r
514             // current media has ended\r
515             onEnd();\r
516         }\r
517         else if( newState == 9 )\r
518         {\r
519             // current media encountered error\r
520             onError();\r
521         }\r
522         prevState = newState;\r
523     }\r
524     else if( newState == 3 )\r
525     {\r
526         // current media is playing\r
527         onPlaying();\r
528     }\r
529     if( monitorTimerId == 0 )\r
530     {\r
531         monitorTimerId = setInterval("monitor()", 1000);\r
532     }\r
533 };\r
534 \r
535 /* actions */\r
536 \r
537 function doGo(targetURL)\r
538 {\r
539     var vlc = getVLC("vlc");\r
540 \r
541     vlc.playlist.clear();\r
542     while( vlc.playlist.itemCount > 0 )\r
543     {\r
544         // clear() may return before the playlist has actually been cleared\r
545         // just wait for it to finish its job\r
546     }\r
547     //vlc.playlist.add(targetURL);\r
548     //vlc.playlist.play();\r
549 \r
550     var itemId = vlc.playlist.add(targetURL);\r
551     if( itemId != -1 )\r
552     {\r
553         // clear the message log and enable error logging\r
554         vlc.log.verbosity = 1;\r
555         vlc.log.messages.clear();\r
556         // play MRL\r
557         vlc.playlist.play();\r
558         if( monitorTimerId == 0 )\r
559         {\r
560             monitor();\r
561         }\r
562     }\r
563     else\r
564     {\r
565         // disable log\r
566         vlc.log.verbosity = -1;\r
567         alert("cannot play at the moment !");\r
568     }\r
569     doItemCount();\r
570 \r
571     if (rateTimerId != 0)\r
572     {\r
573         clearInterval("ratechange()");\r
574     }\r
575     rateTimerId = 0;\r
576 };\r
577 \r
578 function doAdd(targetURL)\r
579 {\r
580     var vlc = getVLC("vlc");\r
581     var options = new Array(":vout-filter=deinterlace", ":deinterlace-mode=linear");\r
582     vlc.playlist.add(targetURL);\r
583     doItemCount();\r
584 };\r
585 \r
586 function doPlayOrPause()\r
587 {\r
588     var vlc = getVLC("vlc");\r
589     if( vlc.playlist.isPlaying )\r
590     {\r
591         vlc.playlist.togglePause();\r
592         monitor();\r
593     }\r
594     else if( vlc.playlist.itemCount > 0 )\r
595     {\r
596         // clear the message log and enable error logging\r
597         vlc.log.verbosity = 1;\r
598         vlc.log.messages.clear();\r
599         vlc.playlist.play();\r
600         monitor();\r
601     }\r
602     else\r
603     {\r
604         // disable log\r
605         vlc.log.verbosity = -1;\r
606         alert('nothing to play !');\r
607     }\r
608     if (rateTimerId != 0)\r
609     {\r
610         clearInterval("ratechange()");\r
611     }\r
612     rateTimerId = 0;\r
613 };\r
614 \r
615 function doStop()\r
616 {\r
617     getVLC("vlc").playlist.stop();\r
618     if( monitorTimerId != 0 )\r
619     {\r
620         clearInterval(monitorTimerId);\r
621         monitorTimerId = 0;\r
622     }\r
623     onStop();\r
624 };\r
625 \r
626 function doPlaySlower()\r
627 {\r
628     var vlc = getVLC("vlc");\r
629     vlc.input.rate = vlc.input.rate / 2;\r
630 };\r
631 \r
632 function doPlayFaster()\r
633 {\r
634     var vlc = getVLC("vlc");\r
635     vlc.input.rate = vlc.input.rate * 2;\r
636 };\r
637 \r
638 /* events */\r
639 \r
640 function onOpen()\r
641 {\r
642     document.getElementById("state").innerHTML = "Opening...";\r
643     document.getElementById("PlayOrPause").value = "Pause";\r
644 };\r
645 \r
646 function onBuffer()\r
647 {\r
648     document.getElementById("state").innerHTML = "Buffering...";\r
649     document.getElementById("PlayOrPause").value = "Pause";\r
650 };\r
651 \r
652 function onPlay()\r
653 {\r
654     document.getElementById("state").innerHTML = "Playing...";\r
655     document.getElementById("PlayOrPause").value = "Pause";\r
656     onPlaying();\r
657 };\r
658 \r
659 function onForward()\r
660 {   // Event is reserved for future enhancements\r
661     document.getElementById("state").innerHTML = "Forward playing...";\r
662 };\r
663 \r
664 function onBackward()\r
665 {   // Event is reserved for future enhancements\r
666     document.getElementById("state").innerHTML = "Backward playing...";\r
667 };\r
668 \r
669 function onEnd()\r
670 {\r
671     document.getElementById("state").innerHTML = "End...";\r
672 };\r
673 \r
674 \r
675 var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "((  Live  ))");\r
676 var liveFeedRoll = 0;\r
677 \r
678 function onPlaying()\r
679 {\r
680     if( ! inputTrackerScrolling )\r
681     {\r
682         var vlc = getVLC("vlc");\r
683         var info = document.getElementById("info");\r
684         var mediaLen = vlc.input.length;\r
685         inputTrackerIgnoreChange  = true;\r
686         if( mediaLen > 0 )\r
687         {\r
688             // seekable media\r
689             if( inputTracker.maxVal == 1.0 )\r
690             {\r
691                 inputTracker.setDisabled(false);\r
692                 inputTracker.maxVal = 1.0;\r
693             }\r
694             inputTracker.setValue(vlc.input.position);\r
695             info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(mediaLen);\r
696         }\r
697         else\r
698         {\r
699             // non-seekable "live" media\r
700             if( inputTracker.maxVal != 0.0 )\r
701             {\r
702                 inputTracker.maxVal = 0.0;\r
703                 inputTracker.setValue(0.0);\r
704                 inputTracker.setDisabled(true);\r
705             }\r
706             liveFeedRoll = liveFeedRoll & 3;\r
707             info.innerHTML = liveFeedText[liveFeedRoll++];\r
708         }\r
709         inputTrackerIgnoreChange  = false;\r
710     }\r
711 };\r
712 \r
713 function onPause()\r
714 {\r
715     document.getElementById("state").innerHTML = "Paused...";\r
716     document.getElementById("PlayOrPause").value = " Play ";\r
717 };\r
718 \r
719 function onStop()\r
720 {\r
721     // disable logging\r
722     vlc.log.verbosity = -1;\r
723 \r
724     if( !inputTracker.disabled )\r
725     {\r
726         inputTracker.setValue(inputTracker.minVal);\r
727         inputTracker.setDisabled(true);\r
728     }\r
729     document.getElementById("info").innerHTML = "-:--:--/-:--:--";\r
730     document.getElementById("state").innerHTML = "Stopped...";\r
731     document.getElementById("PlayOrPause").value = " Play ";\r
732 };\r
733 \r
734 function onError()\r
735 {\r
736     var vlc = getVLC("vlc");\r
737 \r
738     document.getElementById("state").innerHTML = "Error...";\r
739     if( vlc.log.messages.count > 0 )\r
740     {\r
741         // there is one or more messages in the log\r
742         var iter = vlc.log.messages.iterator();\r
743         while( iter.hasNext )\r
744         {\r
745             var msg = iter.next();\r
746             if( msg.severity <= 1 )\r
747             {\r
748                 alert( msg.message );\r
749             }\r
750             document.getElementById("message").innerHTML = msg.message;\r
751         }\r
752         // clear the log once finished to avoid clogging\r
753         vlc.log.messages.clear();\r
754     }\r
755 };\r
756 \r
757 function onInputTrackerScrollStart()\r
758 {\r
759     inputTrackerScrolling = true;\r
760 };\r
761 \r
762 function onInputTrackerScrollEnd(inputTracker, value, pos)\r
763 {\r
764     inputTrackerScrolling = false;\r
765 };\r
766 \r
767 function onInputTrackerChange(inputTracker, value, pos)\r
768 {\r
769     if( ! inputTrackerIgnoreChange )\r
770     {\r
771         var vlc = getVLC("vlc");\r
772         if( (vlc.input.state == 3) && (vlc.input.position != value) )\r
773         {\r
774             var info = document.getElementById("info");\r
775             vlc.input.position = value;\r
776             info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
777         }\r
778     }\r
779 };\r
780 //-->\r
781 </SCRIPT>\r
782 </BODY>\r
783 </HTML>\r