]> git.sesse.net Git - vlc/blob - projects/mozilla/test.html
Add subtitle and teletext JS API to test.html
[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])
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];
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
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='doState();'>\r
140 </TD><TD align="right">
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:
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:
153     <SELECT readonly onChange='doAspectRatio(this.value)'>
154       <OPTION value="default">Default</OPTION>
155       <OPTION value="1:1">1:1</OPTION>
156       <OPTION value="4:3">4:3</OPTION>
157       <OPTION value="16:9">16:9</OPTION>
158       <OPTION value="221:100">221:100</OPTION>
159       <OPTION value="5:4">5:4</OPTION>
160     </SELECT>
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>
201 <TD>Video Subtitle:
202     <INPUT type=button value=" + " onClick='doSubtitle(1);'>
203     <SPAN id="spuTextField" style="text-align:center">--</SPAN>
204     <INPUT type=button value=" - " onClick='doSubtitle(-1);'>
205 </TD>
206 </TR>
207 <TR>
208 <TD>
209     <INPUT type=button id="telx" value="Teletext off" onClick='doToggleTeletext();'>
210     Teletext page:
211     <INPUT size=4 value="100" id="telxPage" onClick="doTelxPage(document.getElementById('telxPage').value);">
212 </TD>
213 </TR>
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;
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 };
302
303 function doSubtitle(value)
304 {
305     var vlc = getVLC("vlc");
306     alert(vlc.video.subtitle + value);
307     vlc.video.subtitle = vlc.video.subtitle + value;
308     document.getElementById("spuTextField").innerHTML = vlc.video.subtitle;
309 };
310
311 function doTelxPage(value)
312 {
313     var vlc = getVLC("vlc");
314     alert( value );
315     vlc.video.teletext = 889; //value;
316 };
317
318 function doToggleTeletext()
319 {
320     var vlc = getVLC("vlc");
321
322     vlc.video.toggleTeletext();
323     if (telxState)
324     {
325         document.getElementById("telx").innerHTML = "Teletext on";
326         telxState = true;
327         alert( "telextext on" );
328     }
329     else
330     {
331         document.getElementById("telx").innerHTML = "Teletext off";
332         telxState = false;
333         alert( "telextext off" );
334     }
335 }\r
336 \r
337 function doItemCount()\r
338 {\r
339    var vlc = getVLC("vlc");\r
340    var count = vlc.playlist.itemCount;\r
341    document.getElementById("itemCount").value = " Items " + count + " ";\r
342 };\r
343 \r
344 function doRemoveItem(item)\r
345 {\r
346    var vlc = getVLC("vlc");\r
347    vlc.playlist.removeItem(item);\r
348 };\r
349 \r
350 function doMessages()\r
351 {\r
352     var vlc = getVLC("vlc");\r
353 \r
354     if( vlc.log.messages.count > 0 )\r
355     {\r
356         // there is one or more messages in the log\r
357         var iter = vlc.log.messages.iterator();\r
358         while( iter.hasNext )\r
359         {\r
360             var msg = iter.next();\r
361             if( msg.severity <= 1 )\r
362             {\r
363                 document.getElementById("message").innerHTML = msg.message;\r
364             }\r
365         }\r
366         // clear the log once finished to avoid clogging\r
367         vlc.log.messages.clear();\r
368     }\r
369 };\r
370 \r
371 function updateVolume(deltaVol)\r
372 {\r
373     var vlc = getVLC("vlc");\r
374     vlc.audio.volume += deltaVol;\r
375     document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";\r
376 };\r
377 \r
378 function formatTime(timeVal)\r
379 {\r
380     var timeHour = Math.round(timeVal / 1000);\r
381     var timeSec = timeHour % 60;\r
382     if( timeSec < 10 )\r
383         timeSec = '0'+timeSec;\r
384     timeHour = (timeHour - timeSec)/60;\r
385     var timeMin = timeHour % 60;\r
386     if( timeMin < 10 )\r
387         timeMin = '0'+timeMin;\r
388     timeHour = (timeHour - timeMin)/60;\r
389     if( timeHour > 0 )\r
390         return timeHour+":"+timeMin+":"+timeSec;\r
391     else\r
392         return timeMin+":"+timeSec;\r
393 };\r
394 \r
395 function doState()\r
396 {\r
397     var vlc = getVLC("vlc");\r
398     var newState = vlc.input.state;\r
399 \r
400     if( newState == 0 )\r
401     {\r
402         // current media has stopped
403         onEnd();\r
404     }\r
405     else if( newState == 1 )\r
406     {\r
407         // current media is openning/connecting\r
408         onOpen();\r
409     }\r
410     else if( newState == 2 )\r
411     {\r
412         // current media is buffering data\r
413         onBuffer();\r
414     }\r
415     else if( newState == 3 )\r
416     {\r
417         // current media is now playing\r
418         onPlay();\r
419     }\r
420     else if( newState == 4 )\r
421     {\r
422         // current media is now paused\r
423         onPause();\r
424     }\r
425     else if( newState == 5 )\r
426     {\r
427         // current media has stopped\r
428         onStop();\r
429     }\r
430     else if( newState == 6 )\r
431     {\r
432         // current media is playing forward\r
433         onForward();\r
434     }\r
435     else if( newState == 7 )\r
436     {\r
437         // current media is playing backward\r
438         onBackward();\r
439     }\r
440     else if( newState == 8 )\r
441     {\r
442         // current media has ended\r
443         onEnd();\r
444     }\r
445     else if( newState == 9 )\r
446     {\r
447         // current media encountered error\r
448         onError();\r
449     }\r
450 };\r
451 \r
452 function monitor()\r
453 {\r
454     var vlc = getVLC("vlc");\r
455     var newState = vlc.input.state;\r
456 \r
457     if( vlc.log.messages.count > 0 )\r
458     {\r
459         // there is one or more messages in the log\r
460         var iter = vlc.log.messages.iterator();\r
461         while( iter.hasNext )\r
462         {\r
463             var msg = iter.next();\r
464             if( msg.severity == 1 )\r
465             {\r
466                 alert( msg.message );\r
467             }\r
468             document.getElementById("message").innerHTML = msg.message;\r
469         }\r
470         // clear the log once finished to avoid clogging\r
471         vlc.log.messages.clear();\r
472     }\r
473 \r
474     if( prevState != newState )\r
475     {\r
476         if( newState == 0 )\r
477         {\r
478             // current media has stopped
479             onEnd();\r
480         }\r
481         else if( newState == 1 )\r
482         {\r
483             // current media is openning/connecting\r
484             onOpen();\r
485         }\r
486         else if( newState == 2 )\r
487         {\r
488             // current media is buffering data\r
489             onBuffer();\r
490         }\r
491         else if( newState == 3 )\r
492         {\r
493             // current media is now playing\r
494             onPlay();\r
495         }\r
496         else if( newState == 4 )\r
497         {\r
498             // current media is now paused\r
499             onPause();\r
500         }\r
501         else if( newState == 5 )\r
502         {\r
503             // current media has stopped\r
504             onStop();\r
505         }\r
506         else if( newState == 6 )\r
507         {\r
508             // current media is playing forward\r
509             onForward();\r
510         }\r
511         else if( newState == 7 )\r
512         {\r
513             // current media is playing backward\r
514             onBackward();\r
515         }\r
516         else if( newState == 8 )\r
517         {\r
518             // current media has ended\r
519             onEnd();\r
520         }\r
521         else if( newState == 9 )\r
522         {\r
523             // current media encountered error\r
524             onError();\r
525         }\r
526         prevState = newState;\r
527     }\r
528     else if( newState == 3 )\r
529     {\r
530         // current media is playing\r
531         onPlaying();\r
532     }\r
533     if( monitorTimerId == 0 )\r
534     {\r
535         monitorTimerId = setInterval("monitor()", 1000);\r
536     }\r
537 };\r
538 \r
539 /* actions */\r
540 \r
541 function doGo(targetURL)\r
542 {\r
543     var vlc = getVLC("vlc");\r
544 \r
545     vlc.playlist.clear();\r
546     while( vlc.playlist.itemCount > 0 )\r
547     {\r
548         // clear() may return before the playlist has actually been cleared\r
549         // just wait for it to finish its job\r
550     }\r
551     //vlc.playlist.add(targetURL);\r
552     //vlc.playlist.play();\r
553 \r
554     var itemId = vlc.playlist.add(targetURL);\r
555     if( itemId != -1 )\r
556     {\r
557         // clear the message log and enable error logging\r
558         vlc.log.verbosity = 1;\r
559         vlc.log.messages.clear();\r
560         // play MRL\r
561         vlc.playlist.play();\r
562         if( monitorTimerId == 0 )\r
563         {\r
564             monitor();\r
565         }\r
566     }\r
567     else\r
568     {\r
569         // disable log\r
570         vlc.log.verbosity = -1;\r
571         alert("cannot play at the moment !");\r
572     }\r
573     doItemCount();\r
574 \r
575     if (rateTimerId != 0)\r
576     {\r
577         clearInterval("ratechange()");\r
578     }\r
579     rateTimerId = 0;\r
580 };\r
581 \r
582 function doAdd(targetURL)\r
583 {\r
584     var vlc = getVLC("vlc");\r
585     var options = new Array(":vout-filter=deinterlace", ":deinterlace-mode=linear");\r
586     vlc.playlist.add(targetURL);\r
587     doItemCount();\r
588 };\r
589 \r
590 function doPlayOrPause()\r
591 {\r
592     var vlc = getVLC("vlc");\r
593     if( vlc.playlist.isPlaying )\r
594     {\r
595         vlc.playlist.togglePause();\r
596         monitor();\r
597     }\r
598     else if( vlc.playlist.itemCount > 0 )\r
599     {\r
600         // clear the message log and enable error logging\r
601         vlc.log.verbosity = 1;\r
602         vlc.log.messages.clear();\r
603         vlc.playlist.play();\r
604         monitor();\r
605     }\r
606     else\r
607     {\r
608         // disable log\r
609         vlc.log.verbosity = -1;\r
610         alert('nothing to play !');\r
611     }\r
612     if (rateTimerId != 0)\r
613     {\r
614         clearInterval("ratechange()");\r
615     }\r
616     rateTimerId = 0;\r
617 };\r
618 \r
619 function doStop()\r
620 {\r
621     getVLC("vlc").playlist.stop();\r
622     if( monitorTimerId != 0 )\r
623     {\r
624         clearInterval(monitorTimerId);\r
625         monitorTimerId = 0;\r
626     }\r
627     onStop();\r
628 };\r
629 \r
630 function doPlaySlower()\r
631 {\r
632     var vlc = getVLC("vlc");\r
633     vlc.input.rate = vlc.input.rate / 2;\r
634 };\r
635 \r
636 function doPlayFaster()\r
637 {\r
638     var vlc = getVLC("vlc");\r
639     vlc.input.rate = vlc.input.rate * 2;\r
640 };\r
641 \r
642 /* events */\r
643 \r
644 function onOpen()\r
645 {\r
646     document.getElementById("state").innerHTML = "Opening...";\r
647     document.getElementById("PlayOrPause").value = "Pause";\r
648 };\r
649 \r
650 function onBuffer()\r
651 {\r
652     document.getElementById("state").innerHTML = "Buffering...";\r
653     document.getElementById("PlayOrPause").value = "Pause";\r
654 };\r
655 \r
656 function onPlay()\r
657 {\r
658     document.getElementById("state").innerHTML = "Playing...";\r
659     document.getElementById("PlayOrPause").value = "Pause";\r
660     onPlaying();\r
661 };\r
662 \r
663 function onForward()\r
664 {   // Event is reserved for future enhancements\r
665     document.getElementById("state").innerHTML = "Forward playing...";\r
666 };\r
667 \r
668 function onBackward()\r
669 {   // Event is reserved for future enhancements\r
670     document.getElementById("state").innerHTML = "Backward playing...";\r
671 };\r
672 \r
673 function onEnd()\r
674 {\r
675     document.getElementById("state").innerHTML = "End...";\r
676 };\r
677 \r
678 \r
679 var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "((  Live  ))");\r
680 var liveFeedRoll = 0;\r
681 \r
682 function onPlaying()\r
683 {\r
684     if( ! inputTrackerScrolling )\r
685     {\r
686         var vlc = getVLC("vlc");\r
687         var info = document.getElementById("info");\r
688         var mediaLen = vlc.input.length;\r
689         inputTrackerIgnoreChange  = true;\r
690         if( mediaLen > 0 )\r
691         {\r
692             // seekable media\r
693             if( inputTracker.maxVal == 1.0 )\r
694             {\r
695                 inputTracker.setDisabled(false);\r
696                 inputTracker.maxVal = 1.0;\r
697             }\r
698             inputTracker.setValue(vlc.input.position);\r
699             info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(mediaLen);\r
700         }\r
701         else\r
702         {\r
703             // non-seekable "live" media\r
704             if( inputTracker.maxVal != 0.0 )\r
705             {\r
706                 inputTracker.maxVal = 0.0;\r
707                 inputTracker.setValue(0.0);\r
708                 inputTracker.setDisabled(true);\r
709             }\r
710             liveFeedRoll = liveFeedRoll & 3;\r
711             info.innerHTML = liveFeedText[liveFeedRoll++];\r
712         }\r
713         inputTrackerIgnoreChange  = false;\r
714     }\r
715 };\r
716 \r
717 function onPause()\r
718 {\r
719     document.getElementById("state").innerHTML = "Paused...";\r
720     document.getElementById("PlayOrPause").value = " Play ";\r
721 };\r
722 \r
723 function onStop()\r
724 {\r
725     // disable logging\r
726     vlc.log.verbosity = -1;\r
727 \r
728     if( !inputTracker.disabled )
729     {\r
730         inputTracker.setValue(inputTracker.minVal);\r
731         inputTracker.setDisabled(true);\r
732     }\r
733     document.getElementById("info").innerHTML = "-:--:--/-:--:--";\r
734     document.getElementById("state").innerHTML = "Stopped...";\r
735     document.getElementById("PlayOrPause").value = " Play ";\r
736 };\r
737 \r
738 function onError()\r
739 {\r
740     var vlc = getVLC("vlc");\r
741 \r
742     document.getElementById("state").innerHTML = "Error...";\r
743     if( vlc.log.messages.count > 0 )\r
744     {\r
745         // there is one or more messages in the log\r
746         var iter = vlc.log.messages.iterator();\r
747         while( iter.hasNext )\r
748         {\r
749             var msg = iter.next();\r
750             if( msg.severity <= 1 )\r
751             {\r
752                 alert( msg.message );\r
753             }\r
754             document.getElementById("message").innerHTML = msg.message;\r
755         }\r
756         // clear the log once finished to avoid clogging\r
757         vlc.log.messages.clear();\r
758     }\r
759 };\r
760 \r
761 function onInputTrackerScrollStart()\r
762 {\r
763     inputTrackerScrolling = true;\r
764 };\r
765 \r
766 function onInputTrackerScrollEnd(inputTracker, value, pos)\r
767 {\r
768     inputTrackerScrolling = false;\r
769 };\r
770 \r
771 function onInputTrackerChange(inputTracker, value, pos)\r
772 {\r
773     if( ! inputTrackerIgnoreChange )\r
774     {\r
775         var vlc = getVLC("vlc");\r
776         if( (vlc.input.state == 3) && (vlc.input.position != value) )\r
777         {\r
778             var info = document.getElementById("info");\r
779             vlc.input.position = value;\r
780             info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
781         }\r
782     }\r
783 };\r
784 //-->\r
785 </SCRIPT>\r
786 </BODY>\r
787 </HTML>\r