Update test.html for mozilla and activex based browsers.
[vlc.git] / 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 {\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     var timeHour = Math.round(timeVal / 1000);\r
395     var timeSec = timeHour % 60;\r
396     if( timeSec < 10 )\r
397         timeSec = '0'+timeSec;\r
398     timeHour = (timeHour - timeSec)/60;\r
399     var timeMin = timeHour % 60;\r
400     if( timeMin < 10 )\r
401         timeMin = '0'+timeMin;\r
402     timeHour = (timeHour - timeMin)/60;\r
403     if( timeHour > 0 )\r
404         return timeHour+":"+timeMin+":"+timeSec;\r
405     else\r
406         return timeMin+":"+timeSec;\r
407 }\r
408 \r
409 function doState()\r
410 {\r
411     var vlc = getVLC("vlc");\r
412     var newState = 0;\r
413 \r
414     if( vlc )\r
415         newState = vlc.input.state;\r
416 \r
417     if( newState == 0 )\r
418     {\r
419         // current media has stopped\r
420         onEnd();\r
421     }\r
422     else if( newState == 1 )\r
423     {\r
424         // current media is openning/connecting\r
425         onOpen();\r
426     }\r
427     else if( newState == 2 )\r
428     {\r
429         // current media is buffering data\r
430         onBuffer();\r
431     }\r
432     else if( newState == 3 )\r
433     {\r
434         // current media is now playing\r
435         onPlay();\r
436     }\r
437     else if( newState == 4 )\r
438     {\r
439         // current media is now paused\r
440         onPause();\r
441     }\r
442     else if( newState == 5 )\r
443     {\r
444         // current media has stopped\r
445         onStop();\r
446     }\r
447     else if( newState == 6 )\r
448     {\r
449         // current media has ended\r
450         onEnd();\r
451     }\r
452     else if( newState == 7 )\r
453     {\r
454         // current media encountered error\r
455         onError();\r
456     }\r
457 }\r
458 \r
459 function monitor()\r
460 {\r
461     var vlc = getVLC("vlc");\r
462     var newState = 0;\r
463 \r
464     if( vlc )\r
465     {\r
466         newState = vlc.input.state;\r
467 \r
468         if( vlc.log.messages.count > 0 )\r
469         {\r
470             // there is one or more messages in the log\r
471             var iter = vlc.log.messages.iterator();\r
472             while( iter.hasNext )\r
473             {\r
474                 var msg = iter.next();\r
475                 if( msg.severity == 1 )\r
476                 {\r
477                     alert( msg.message );\r
478                 }\r
479                 document.getElementById("message").innerHTML = msg.message;\r
480             }\r
481             // clear the log once finished to avoid clogging\r
482             vlc.log.messages.clear();\r
483         }\r
484     }\r
485 \r
486     if( prevState != newState )\r
487     {\r
488         if( newState == 0 )\r
489         {\r
490             // current media has stopped\r
491             onEnd();\r
492         }\r
493         else if( newState == 1 )\r
494         {\r
495             // current media is openning/connecting\r
496             onOpen();\r
497         }\r
498         else if( newState == 2 )\r
499         {\r
500             // current media is buffering data\r
501             onBuffer();\r
502         }\r
503         else if( newState == 3 )\r
504         {\r
505             // current media is now playing\r
506             onPlay();\r
507         }\r
508         else if( newState == 4 )\r
509         {\r
510             // current media is now paused\r
511             onPause();\r
512         }\r
513         else if( newState == 5 )\r
514         {\r
515             // current media has stopped\r
516                 onStop();\r
517         }\r
518         else if( newState == 6 )\r
519         {\r
520             // current media has ended\r
521             onEnd();\r
522         }\r
523         else if( newState == 7 )\r
524         {\r
525             // current media encountered error\r
526             onError();\r
527         }\r
528         prevState = newState;\r
529     }\r
530     else if( newState == 3 )\r
531     {\r
532         // current media is playing\r
533         onPlaying();\r
534     }\r
535     if( monitorTimerId == 0 )\r
536     {\r
537         monitorTimerId = setInterval("monitor()", 1000);\r
538     }\r
539 };\r
540 \r
541 /* actions */\r
542 \r
543 function doGo(targetURL)\r
544 {\r
545     var vlc = getVLC("vlc");\r
546 \r
547     if( vlc )\r
548     {\r
549         vlc.playlist.items.clear();\r
550         while( vlc.playlist.items.count > 0 )\r
551         {\r
552             // clear() may return before the playlist has actually been cleared\r
553             // just wait for it to finish its job\r
554         }\r
555         var options = new Array(":rtsp-tcp");\r
556         var itemId = vlc.playlist.add(targetURL,"",options);\r
557         if( itemId != -1 )\r
558         {\r
559             // clear the message log and enable error logging\r
560             vlc.log.verbosity = 1;\r
561             vlc.log.messages.clear();\r
562             // play MRL\r
563             vlc.playlist.playItem(itemId);\r
564             if( monitorTimerId == 0 )\r
565             {\r
566                 monitor();\r
567             }\r
568         }\r
569         else\r
570         {\r
571             // disable log\r
572             vlc.log.verbosity = -1;\r
573             alert("cannot play at the moment !");\r
574         }\r
575         doItemCount();\r
576     }\r
577 }\r
578 \r
579 function doAdd(targetURL)\r
580 {\r
581     var vlc = getVLC("vlc");\r
582     var options = new Array(":vout-filter=deinterlace", ":deinterlace-mode=linear");\r
583     if( vlc )\r
584     {\r
585         vlc.playlist.add(targetURL, "", options);\r
586         doItemCount();\r
587     }\r
588 }\r
589 \r
590 function doPlayOrPause()\r
591 {\r
592     var vlc = getVLC("vlc");\r
593     if( vlc )\r
594     {\r
595         if( vlc.playlist.isPlaying )\r
596         {\r
597             vlc.playlist.togglePause();\r
598             monitor();\r
599         }\r
600         else if( vlc.playlist.items.count > 0 )\r
601         {\r
602             // clear the message log and enable error logging\r
603             vlc.log.verbosity = 1;\r
604             vlc.log.messages.clear();\r
605             vlc.playlist.play();\r
606             monitor();\r
607         }\r
608         else\r
609         {\r
610             // disable log\r
611             vlc.log.verbosity = -1;\r
612             alert('nothing to play !');\r
613         }\r
614     }\r
615 }\r
616 \r
617 function doStop()\r
618 {\r
619     var vlc = getVLC("vlc");\r
620 \r
621     if( vlc )\r
622         vlc.playlist.stop();\r
623 \r
624     if( monitorTimerId != 0 )\r
625     {\r
626         clearInterval(monitorTimerId);\r
627         monitorTimerId = 0;\r
628     }\r
629     onStop();\r
630 }\r
631 \r
632 function doPlaySlower()\r
633 {\r
634     var vlc = getVLC("vlc");\r
635     if( vlc )\r
636         vlc.input.rate = vlc.input.rate / 2;\r
637 }\r
638 \r
639 function doPlayFaster()\r
640 {\r
641     var vlc = getVLC("vlc");\r
642     if( vlc )\r
643         vlc.input.rate = vlc.input.rate * 2;\r
644 }\r
645 \r
646 /* events */\r
647 \r
648 function onOpen()\r
649 {\r
650     document.getElementById("state").innerHTML = "Opening...";\r
651     document.getElementById("PlayOrPause").value = "Pause";\r
652 }\r
653 \r
654 function onBuffer()\r
655 {\r
656     document.getElementById("state").innerHTML = "Buffering...";\r
657     document.getElementById("PlayOrPause").value = "Pause";\r
658 }\r
659 \r
660 function onPlay()\r
661 {\r
662     document.getElementById("state").innerHTML = "Playing...";\r
663     document.getElementById("PlayOrPause").value = "Pause";\r
664     onPlaying();\r
665 }\r
666 \r
667 function onEnd()\r
668 {\r
669     document.getElementById("state").innerHTML = "End...";\r
670 }\r
671 \r
672 var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "((  Live  ))");\r
673 var liveFeedRoll = 0;\r
674 \r
675 function onPlaying()\r
676 {\r
677     if( !inputTrackerScrolling )\r
678     {\r
679         var vlc = getVLC("vlc");\r
680         var info = document.getElementById("info");\r
681         if( vlc )\r
682         {\r
683             var mediaLen = vlc.input.length;\r
684             inputTrackerIgnoreChange = true;\r
685             if( mediaLen > 0 )\r
686             {\r
687                 // seekable media\r
688                 if( inputTracker )\r
689                 {\r
690                     if( inputTracker.maxVal == 1.0 )\r
691                     {\r
692                         inputTracker.setDisabled(false);\r
693                         inputTracker.maxVal = 1.0;\r
694                     }\r
695                     inputTracker.setValue(vlc.input.position);\r
696                 }\r
697                 info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(mediaLen);\r
698             }\r
699             else\r
700             {\r
701                 // non-seekable "live" media\r
702                 if( inputTracker )\r
703                 {\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                 }\r
711                 liveFeedRoll = liveFeedRoll & 3;\r
712                 info.innerHTML = liveFeedText[liveFeedRoll++];\r
713             }\r
714             inputTrackerIgnoreChange  = false;\r
715         }\r
716     }\r
717 }\r
718 \r
719 function onPause()\r
720 {\r
721     document.getElementById("state").innerHTML = "Paused...";\r
722     document.getElementById("PlayOrPause").value = " Play ";\r
723 }\r
724 \r
725 function onStop()\r
726 {\r
727     // disable logging\r
728     var vlc = getVLC("vlc");\r
729     if( vlc )\r
730         vlc.log.verbosity = -1;\r
731 \r
732     if( inputTracker )\r
733     {\r
734         if( !inputTracker.disabled )\r
735         {\r
736             inputTracker.setValue(inputTracker.minVal);\r
737             inputTracker.setDisabled(true);\r
738         }\r
739     }\r
740 \r
741     document.getElementById("info").innerHTML = "-:--:--/-:--:--";\r
742     document.getElementById("state").innerHTML = "Stopped...";\r
743     document.getElementById("PlayOrPause").value = " Play ";\r
744 }\r
745 \r
746 function onError()\r
747 {\r
748     var vlc = getVLC("vlc");\r
749 \r
750     document.getElementById("state").innerHTML = "Error...";\r
751     if( vlc )\r
752     {\r
753         if( vlc.log.messages.count > 0 )\r
754         {\r
755             // there is one or more messages in the log\r
756             var iter = vlc.log.messages.iterator();\r
757             while( iter.hasNext )\r
758             {\r
759                 var msg = iter.next();\r
760                 if( msg.severity <= 1 )\r
761                 {\r
762                     alert( msg.message );\r
763                 }\r
764                 document.getElementById("message").innerHTML = msg.message;\r
765             }\r
766             // clear the log once finished to avoid clogging\r
767             vlc.log.messages.clear();\r
768         }\r
769     }\r
770 }\r
771 \r
772 function onInputTrackerScrollStart()\r
773 {\r
774     inputTrackerScrolling = true;\r
775 }\r
776 \r
777 function onInputTrackerScrollEnd(inputTracker, value, pos)\r
778 {\r
779     inputTrackerScrolling = false;\r
780 }\r
781 \r
782 function onInputTrackerChange(inputTracker, value, pos)\r
783 {\r
784     if( !inputTrackerIgnoreChange )\r
785     {\r
786         var vlc = getVLC("vlc");\r
787         if( vlc )\r
788         {\r
789             if( (vlc.input.state == 3) && (vlc.input.position != value) )\r
790             {\r
791                 var info = document.getElementById("info");\r
792                 vlc.input.position = value;\r
793                 info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
794             }\r
795         }\r
796     }\r
797 }\r
798 \r
799 //-->\r
800 </SCRIPT>\r
801 </BODY>\r
802 </HTML>\r