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