]> git.sesse.net Git - vlc/blob - projects/mozilla/test.html
Merge branch 'master' into lpcm_encoder
[vlc] / projects / mozilla / test.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <HTML>
3 <TITLE>VLC Plugin test page</TITLE>
4 <STYLE>
5   .inputTrackerInput {
6         height:20;
7         width:30;
8         font-family : Arial, Helvetica, sans-serif;
9         font-size : 12px;
10   }
11 </STYLE>
12
13 <SCRIPT language="JavaScript"><!--
14 function init()
15 {
16     if( navigator.appName.indexOf("Microsoft Internet")==-1 )
17     {
18         onVLCPluginReady()
19     }
20     else if( document.readyState == 'complete' )
21     {
22         onVLCPluginReady();
23     }
24     else
25     {
26         /* Explorer loads plugins asynchronously */
27         document.onreadystatechange=function()
28         {
29             if( document.readyState == 'complete' )
30             {
31                 onVLCPluginReady();
32             }
33         }
34     }
35 }
36
37 function getVLC(name)
38 {
39     if (window.document[name])
40     {
41         return window.document[name];
42     }
43     if (navigator.appName.indexOf("Microsoft Internet")==-1)
44     {
45         if (document.embeds && document.embeds[name])
46             return document.embeds[name];
47     }
48     else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
49     {
50         return document.getElementById(name);
51     }
52 }
53
54 function registerVLCEvent(event, handler)
55 {
56     var vlc = getVLC("vlc");
57
58     if (vlc) {
59         if (vlc.attachEvent) {
60             // Microsoft
61             vlc.attachEvent (event, handler);
62         } else if (vlc.addEventListener) {
63             // Mozilla: DOM level 2
64             vlc.addEventListener (event, handler, true);
65         } else {
66             // DOM level 0
67             eval("vlc.on" + event + " = handler");
68         }
69     }
70 }
71
72 function unregisterVLCEvent(event, handler)
73 {
74     var vlc = getVLC("vlc");
75
76     if (vlc) {
77         if (vlc.detachEvent) {
78             // Microsoft
79             vlc.detachEvent (event, handler);
80         } else if (vlc.removeEventListener) {
81             // Mozilla: DOM level 2
82             vlc.removeEventListener (event, handler, true);
83         } else {
84             // DOM level 0
85             eval("vlc.on" + event + " = null");
86         }
87     }
88 }
89
90 // JS VLC API callbacks
91 function handleMediaPlayerMediaChanged()
92 {
93     document.getElementById("info").innerHTML = "Media Changed";
94 }
95
96 function handle_MediaPlayerNothingSpecial()
97 {
98     document.getElementById("state").innerHTML = "Idle...";
99 }
100
101 function handle_MediaPlayerOpening()
102 {
103     onOpen();
104 }
105
106 function handle_MediaPlayerBuffering(val)
107 {
108     document.getElementById("info").innerHTML = val + "%";
109 }
110
111 function handle_MediaPlayerPlaying()
112 {
113     onPlay();
114 }
115
116 function handle_MediaPlayerPaused()
117 {
118         onPause();
119 }
120
121 function handle_MediaPlayerStopped()
122 {
123     onStop();
124 }
125
126 function handle_MediaPlayerForward()
127 {
128     document.getElementById("state").innerHTML = "Forward...";
129 }
130
131 function handle_MediaPlayerBackward()
132 {
133     document.getElementById("state").innerHTML = "Backward...";
134 }
135
136 function handle_MediaPlayerEndReached()
137 {
138     onEnd();
139 }
140
141 function handle_MediaPlayerEncounteredError()
142 {
143     onError();
144 }
145
146 function handle_MediaPlayerTimeChanged(time)
147 {
148     var vlc = getVLC("vlc");
149     var info = document.getElementById("info");
150     if( vlc )
151     {
152         var mediaLen = vlc.input.length;
153         if( mediaLen > 0 )
154         {
155             // seekable media
156             info.innerHTML = formatTime(time)+"/"+formatTime(mediaLen);
157         }
158     }
159 }
160
161 function handle_MediaPlayerPositionChanged(val)
162 {
163     // set javascript slider to correct position
164 }
165
166 function handle_MediaPlayerSeekableChanged(val)
167 {
168     setSeekable(val);
169 }
170
171 function handle_MediaPlayerPausableChanged(val)
172 {
173     setPauseable(val);
174 }
175
176 function handle_MediaPlayerTitleChanged(val)
177 {
178     //setTitle(val);
179     document.getElementById("info").innerHTML = "Title: " + val;
180 }
181
182 function handle_MediaPlayerLengthChanged(val)
183 {
184     //setMediaLength(val);
185 }
186
187 // VLC Plugin
188 function onVLCPluginReady()
189 {
190         registerVLCEvent("MediaPlayerMediaChanged", handleMediaPlayerMediaChanged);
191         registerVLCEvent("MediaPlayerNothingSpecial", handle_MediaPlayerNothingSpecial);
192         registerVLCEvent("MediaPlayerOpening", handle_MediaPlayerOpening);
193         registerVLCEvent("MediaPlayerBuffering", handle_MediaPlayerBuffering);
194         registerVLCEvent("MediaPlayerPlaying", handle_MediaPlayerPlaying);
195         registerVLCEvent("MediaPlayerPaused", handle_MediaPlayerPaused);
196         registerVLCEvent("MediaPlayerStopped", handle_MediaPlayerStopped);
197         registerVLCEvent("MediaPlayerForward", handle_MediaPlayerForward);
198         registerVLCEvent("MediaPlayerBackward", handle_MediaPlayerBackward);
199         registerVLCEvent("MediaPlayerEndReached", handle_MediaPlayerEndReached);
200         registerVLCEvent("MediaPlayerEncounteredError", handle_MediaPlayerEncounteredError);
201         registerVLCEvent("MediaPlayerTimeChanged", handle_MediaPlayerTimeChanged);
202         registerVLCEvent("MediaPlayerPositionChanged", handle_MediaPlayerPositionChanged);
203         registerVLCEvent("MediaPlayerSeekableChanged", handle_MediaPlayerSeekableChanged);
204         registerVLCEvent("MediaPlayerPausableChanged", handle_MediaPlayerPausableChanged);
205         registerVLCEvent("MediaPlayerTitleChanged", handle_MediaPlayerTitleChanged);
206         registerVLCEvent("MediaPlayerLengthChanged", handle_MediaPlayerLengthChanged);
207 }
208
209 function close()
210 {
211     unregisterVLCEvent("MediaPlayerMediaChanged", handleMediaPlayerMediaChanged);
212     unregisterVLCEvent("MediaPlayerNothingSpecial", handle_MediaPlayerNothingSpecial);
213     unregisterVLCEvent("MediaPlayerOpening", handle_MediaPlayerOpening);
214     unregisterVLCEvent("MediaPlayerBuffering", handle_MediaPlayerBuffering);
215     unregisterVLCEvent("MediaPlayerPlaying", handle_MediaPlayerPlaying);
216     unregisterVLCEvent("MediaPlayerPaused", handle_MediaPlayerPaused);
217     unregisterVLCEvent("MediaPlayerStopped", handle_MediaPlayerStopped);
218     unregisterVLCEvent("MediaPlayerForward", handle_MediaPlayerForward);
219     unregisterVLCEvent("MediaPlayerBackward", handle_MediaPlayerBackward);
220     unregisterVLCEvent("MediaPlayerEndReached", handle_MediaPlayerEndReached);
221     unregisterVLCEvent("MediaPlayerEncounteredError", handle_MediaPlayerEncounteredError);
222     unregisterVLCEvent("MediaPlayerTimeChanged", handle_MediaPlayerTimeChanged);
223     unregisterVLCEvent("MediaPlayerPositionChanged", handle_MediaPlayerPositionChanged);
224     unregisterVLCEvent("MediaPlayerSeekableChanged", handle_MediaPlayerSeekableChanged);
225     unregisterVLCEvent("MediaPlayerPausableChanged", handle_MediaPlayerPausableChanged);
226     unregisterVLCEvent("MediaPlayerTitleChanged", handle_MediaPlayerTitleChanged);
227     unregisterVLCEvent("MediaPlayerLengthChanged", handle_MediaPlayerLengthChanged);
228 }
229
230 //--></SCRIPT>
231
232 <BODY onLoad="init();" onClose="close();">
233 <TABLE>
234 <TR><TD colspan="2">
235 MRL:
236 <INPUT size="90" id="targetTextField" value="">
237 <INPUT type=submit value="Go" onClick="doGo(document.getElementById('targetTextField').value);">
238 <INPUT type=submit value="Add" onClick="doAdd(document.getElementById('targetTextField').value);">
239 </TD></TR>
240 <TR><TD align="center" colspan="2">
241 <!--
242 Insert VideoLAN.VLCPlugin.2
243 -->
244 <OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
245         width="640"
246         height="480"
247         id="vlc"
248         events="True">
249 <param name="MRL" value="" />
250 <param name="ShowDisplay" value="True" />
251 <param name="AutoLoop" value="False" />
252 <param name="AutoPlay" value="False" />
253 <param name="Volume" value="50" />
254 <param name="toolbar" value="true" />
255 <param name="StartTime" value="0" />
256 <EMBED pluginspage="http://www.videolan.org"
257        type="application/x-vlc-plugin"
258        version="VideoLAN.VLCPlugin.2"
259        width="640"
260        height="480"
261        toolbar="true"
262        text="Waiting for video"
263        name="vlc">
264 </EMBED>
265 </OBJECT>
266 </TD></TR>
267 <TR><TD colspan="2">
268 <TABLE><TR>
269 <TD valign="top" width="550">
270 <!--
271 Insert Slider widget
272 -->
273 <DIV id="inputTrackerDiv"</DIV>
274 </TD><TD width="15%">
275 <DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV>
276 <DIV id="state" style="text-align:center">Stopped...</DIV>
277 </TD></TR></TABLE>
278 </TD></TR>
279 <TR><TD>
280 <INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'>
281 <INPUT type=button value="Stop" onClick='doStop();'>
282 &nbsp;
283 <INPUT type=button value=" << " onClick='doPlaySlower();'>
284 <INPUT type=button value="Reverse" onClick='doReverse();'>
285 <INPUT type=button value=" >> " onClick='doPlayFaster();'>
286 &nbsp;
287 <INPUT type=button value="Fullscreen" onClick='getVLC("vlc").video.toggleFullscreen();'>
288 <INPUT type=button value="Version" onClick='alert("vlc " + getVLC("vlc").VersionInfo);'>
289 <INPUT type=button value=" State " onClick='alert("state: " + getVLC("vlc").input.state);'>
290 </TD><TD align="right">
291 <SPAN style="text-align:center">Volume:</SPAN>
292 <INPUT type=button value=" - " onClick='updateVolume(-10)'>
293 <SPAN id="volumeTextField" style="text-align:center">--</SPAN>
294 <INPUT type=button value=" + " onClick='updateVolume(+10)'>
295 <INPUT type=button value="Mute" onClick='getVLC("vlc").audio.toggleMute();'>
296 </TD>
297 </TR>
298 <TR><TD>Playlist:
299 <INPUT type=button value="Prev" onClick='getVLC("vlc").playlist.prev();'>
300 <INPUT type=button value="Next" onClick='getVLC("vlc").playlist.next();'>
301 <INPUT type=button value="Clear All" onClick='doPlaylistClearAll();'>
302     Aspect Ratio:
303     <SELECT readonly onChange='doAspectRatio(this.value)'>
304       <OPTION value="default">Default</OPTION>
305       <OPTION value="1:1">1:1</OPTION>
306       <OPTION value="4:3">4:3</OPTION>
307       <OPTION value="16:9">16:9</OPTION>
308       <OPTION value="221:100">221:100</OPTION>
309       <OPTION value="5:4">5:4</OPTION>
310     </SELECT>
311 </TD><TD align="right">
312 <INPUT type=button id="itemCount" value=" Items 0 " onClick='doItemCount();'>
313 <INPUT size=4 value="" id="removeid"><INPUT type=submit value="Delete" onClick="doRemoveItem(document.getElementById('removeid').value);">
314 </TD>
315 </TR>
316 <TR><TD>Audio Channel:
317   <SELECT readonly onClick='doAudioChannel(this.value);'>
318     <OPTION value=1>Stereo</OPTION>
319     <OPTION value=2>Reverse Stereo</OPTION>
320     <OPTION value=3>Left</OPTION>
321     <OPTION value=4>Right</OPTION>
322     <OPTION value=5>Dolby</OPTION>
323   </SELECT>
324 </TD>
325 <TD>
326 <INPUT type=button value="current channel" onClick='alert(getVLC("vlc").audio.channel);'>
327 </TD>
328 </TR>
329 <TR><TD> Audio Track:
330 <INPUT type=button value=" + " onClick='doAudioTrack(1);'>
331 <SPAN id="trackTextField" style="text-align:center">--</SPAN>
332 <INPUT type=button value=" - " onClick='doAudioTrack(-1);'>
333 <INPUT type=button value="current track" onClick='alert(getVLC("vlc").audio.description(vlc.audio.track));'>
334 <INPUT type=button value="number of track" onClick='alert(getVLC("vlc").audio.count);'>
335 </TD>
336 <TD>
337 <INPUT type=button value="set slider" onClick='doSetSlider();'>
338 <INPUT type=button value="get position" onClick='doGetPosition();'>
339 </TD>
340 </TR>
341 <TR>
342 <TD>Video Subtitle:
343     <INPUT type=button value=" + " onClick='doSubtitle(1);'>
344     <SPAN id="spuTextField" style="text-align:center">--</SPAN>
345     <INPUT type=button value=" - " onClick='doSubtitle(-1);'>
346     <INPUT type=button value="current subtitle" onClick='alert(getVLC("vlc").subtitle.description(vlc.subtitle.track));'>
347     <INPUT type=button value="number of subtitle" onClick='alert(getVLC("vlc").subtitle.count);'>
348 </TD>
349 </TR>
350 <TR>
351 <TD>Deinterlacing:
352     <INPUT type=button value="BLEND" onClick='getVLC("vlc").video.deinterlace.enable("blend");'>
353     <INPUT type=button value="  X  " onClick='getVLC("vlc").video.deinterlace.enable("x");'>
354     <INPUT type=button value="Disable" onClick='getVLC("vlc").video.deinterlace.disable();'>
355 </TD>
356 </TR>
357 <TR>
358 <TD>Marquee video filter:
359     <INPUT type=button value="Enable" onClick='getVLC("vlc").video.marquee.enable();'>
360     <INPUT type=button value="Disable" onClick='getVLC("vlc").video.marquee.disable();'>
361     <INPUT size=4 value="" id="marqueeIntValue">
362     <SELECT readonly onClick="doMarqueeOption(this.value,document.getElementById('marqueeIntValue').value);">
363         <OPTION value=1>Color</OPTION>
364         <OPTION value=2>Opacity</OPTION>
365         <OPTION value=3>Position</OPTION>
366         <OPTION value=4>Refresh</OPTION>
367         <OPTION value=5>Size</OPTION>
368         <OPTION value=6>Text</OPTION>
369         <OPTION value=7>Timeout</OPTION>
370         <OPTION value=8>X</OPTION>
371         <OPTION value=9>Y</OPTION>
372     </SELECT>
373 </TD>
374 </TR>
375 <TR>
376 <TD>Logo video filter:
377     <INPUT type=button value="Enable" onClick='getVLC("vlc").video.logo.enable();'>
378     <INPUT type=button value="Disable" onClick='getVLC("vlc").video.logo.disable();'>
379     <INPUT size=4 value="" id="logoIntValue">
380     <SELECT readonly onClick="doLogoOption(this.value,document.getElementById('logoIntValue').value);">
381         <OPTION value=1>File</OPTION>
382         <OPTION value=2>Position</OPTION>
383         <OPTION value=3>Opacity</OPTION>
384         <OPTION value=4>Repeat</OPTION>
385         <OPTION value=5>Delay</OPTION>
386         <OPTION value=6>X</OPTION>
387         <OPTION value=7>Y</OPTION>
388     </SELECT>
389 </TD>
390 </TR>
391 <TR>
392 <TD>
393     <INPUT type=button id="telx" value="Teletext off" onClick='doToggleTeletext();'>
394     Teletext page:
395     <INPUT size=4 value="100" id="telxPage" onClick='doTelxPage(document.getElementById("telxPage").value);'>
396 </TD>
397 </TR>
398 </TABLE>
399 <SCRIPT language="javascript">
400 <!--
401
402 var rate = 0;
403 var prevState = 0;
404 var telxState = false;
405 var canPause = true;
406 var canSeek = true;
407
408 function setPauseable(val)
409 {
410     canPause = val;
411 }
412
413 function setSeekable(val)
414 {
415     canSeek = val;
416 }
417
418 function doSetSlider()
419 {
420     var vlc = getVLC("vlc");
421
422     // set slider to new position
423     if( vlc )
424         vlc.input.time = (vlc.input.length/2);
425 }
426
427 function doGetPosition()
428 {
429     var vlc = getVLC("vlc");
430
431     // set slider to new position
432     if (vlc)
433         alert( "position is " + vlc.input.time);
434 }
435
436 function doReverse(rate)
437 {
438     var vlc = getVLC("vlc");
439     if( vlc )
440         vlc.input.rate = -1.0 * vlc.input.rate;
441 }
442
443 function doAudioChannel(value)
444 {
445     var vlc = getVLC("vlc");
446     if( vlc )
447         vlc.audio.channel = parseInt(value);
448 }
449
450 function doAudioTrack(value)
451 {
452     var vlc = getVLC("vlc");
453     if( vlc )
454     {
455         vlc.audio.track = vlc.audio.track + value;
456         document.getElementById("trackTextField").innerHTML = vlc.audio.track;
457     }
458 }
459
460 function doAspectRatio(value)
461 {
462     var vlc = getVLC("vlc");
463     if( vlc )
464         vlc.video.aspectRatio = value;
465 }
466
467 function doSubtitle(value)
468 {
469     var vlc = getVLC("vlc");
470     if( vlc )
471     {
472         vlc.subtitle.track = vlc.subtitle.track + value;
473         document.getElementById("spuTextField").innerHTML = vlc.subtitle.track;
474     }
475 }
476
477 function doTelxPage(value)
478 {
479     var vlc = getVLC("vlc");
480     if( vlc )
481         vlc.video.teletext = parseInt(value);
482 }
483
484 function doToggleTeletext()
485 {
486     var vlc = getVLC("vlc");
487
488     if( vlc )
489     {
490         vlc.video.toggleTeletext();
491         if (telxState)
492         {
493             document.getElementById("telx").innerHTML = "Teletext on";
494             telxState = true;
495         }
496         else
497         {
498             document.getElementById("telx").innerHTML = "Teletext off";
499             telxState = false;
500         }
501     }
502 }
503
504 function doItemCount()
505 {
506     var vlc = getVLC("vlc");
507     if( vlc )
508     {
509         var count = vlc.playlist.items.count;
510         document.getElementById("itemCount").value = " Items " + count + " ";
511     }
512 }
513
514 function doRemoveItem(item)
515 {
516     var vlc = getVLC("vlc");
517     if( vlc )
518         vlc.playlist.items.remove(item);
519 }
520
521 function doPlaylistClearAll()
522 {
523     var vlc = getVLC("vlc");
524     if( vlc )
525     {
526         vlc.playlist.items.clear();
527         while( vlc.playlist.items.count > 0)
528         {
529             // wait till playlist empties.
530         }
531         doItemCount();
532     }
533 }
534
535 function updateVolume(deltaVol)
536 {
537     var vlc = getVLC("vlc");
538     if( vlc )
539     {
540         vlc.audio.volume += deltaVol;
541         document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";
542     }
543 }
544
545 function formatTime(timeVal)
546 {
547     if( typeof timeVal != 'number' )
548         return "-:--:--";
549
550     var timeHour = Math.round(timeVal / 1000);
551     var timeSec = timeHour % 60;
552     if( timeSec < 10 )
553         timeSec = '0'+timeSec;
554     timeHour = (timeHour - timeSec)/60;
555     var timeMin = timeHour % 60;
556     if( timeMin < 10 )
557         timeMin = '0'+timeMin;
558     timeHour = (timeHour - timeMin)/60;
559     if( timeHour > 0 )
560         return timeHour+":"+timeMin+":"+timeSec;
561     else
562         return timeMin+":"+timeSec;
563 }
564
565 // Old method of querying current state
566 // function doState() - depreceated
567 function doState()
568 {
569     var vlc = getVLC("vlc");
570     var newState = 0;
571
572     if( vlc )
573         newState = vlc.input.state;
574
575     if( newState == 0 )
576     {
577         // current media has stopped
578         onEnd();
579     }
580     else if( newState == 1 )
581     {
582         // current media is openning/connecting
583         onOpen();
584     }
585     else if( newState == 2 )
586     {
587         // current media is buffering data
588         onBuffer();
589     }
590     else if( newState == 3 )
591     {
592         // current media is now playing
593         onPlay();
594     }
595     else if( newState == 4 )
596     {
597         // current media is now paused
598         onPause();
599     }
600     else if( newState == 5 )
601     {
602         // current media has stopped
603         onStop();
604     }
605     else if( newState == 6 )
606     {
607         // current media has ended
608         onEnd();
609     }
610     else if( newState == 7 )
611     {
612         // current media encountered error
613         onError();
614     }
615 }
616
617 /* actions */
618
619 function doGo(targetURL)
620 {
621     var vlc = getVLC("vlc");
622
623     if( vlc )
624     {
625         vlc.playlist.items.clear();
626         while( vlc.playlist.items.count > 0 )
627         {
628             // clear() may return before the playlist has actually been cleared
629             // just wait for it to finish its job
630         }
631         var options = [":rtsp-tcp"];
632         var itemId = vlc.playlist.add(targetURL,"",options);
633         options = [];
634         if( itemId != -1 )
635         {
636             // play MRL
637             vlc.playlist.playItem(itemId);
638         }
639         else
640         {
641             alert("cannot play at the moment !");
642         }
643         doItemCount();
644     }
645 }
646
647 function doAdd(targetURL)
648 {
649     var vlc = getVLC("vlc");
650     var options = [":vout-filter=deinterlace", ":deinterlace-mode=linear"];
651     if( vlc )
652     {
653         vlc.playlist.add(targetURL, "", options);
654         options = [];
655         doItemCount();
656     }
657 }
658
659 function doPlayOrPause()
660 {
661     var vlc = getVLC("vlc");
662     if( vlc )
663     {
664         if( vlc.playlist.isPlaying && canPause )
665         {
666             vlc.playlist.togglePause();
667         }
668         else if( vlc.playlist.items.count > 0 )
669         {
670             vlc.playlist.play();
671         }
672         else
673         {
674             alert('nothing to play !');
675         }
676     }
677 }
678
679 function doStop()
680 {
681     var vlc = getVLC("vlc");
682     if( vlc )
683         vlc.playlist.stop();
684 }
685
686 function doPlaySlower()
687 {
688     var vlc = getVLC("vlc");
689     if( vlc )
690         vlc.input.rate = vlc.input.rate / 2;
691 }
692
693 function doPlayFaster()
694 {
695     var vlc = getVLC("vlc");
696     if( vlc )
697         vlc.input.rate = vlc.input.rate * 2;
698 }
699
700 function doMarqueeOption(option, value)
701 {
702     var vlc = getVLC("vlc");
703     val = parseInt(value);
704     if( vlc )
705     {
706         if (option == 1)
707             vlc.video.marquee.color = val;
708         if (option == 2)
709             vlc.video.marquee.opacity = val;
710         if (option == 3)
711             vlc.video.marquee.position = value;
712         if (option == 4)
713             vlc.video.marquee.refresh = val;
714         if (option == 5)
715             vlc.video.marquee.size = val;
716         if (option == 6)
717             vlc.video.marquee.text = value;
718         if (option == 7)
719             vlc.video.marquee.timeout = val;
720         if (option == 8)
721             vlc.video.marquee.x = val;
722         if (option == 9)
723             vlc.video.marquee.y = val;
724     }
725 }
726
727 function doLogoOption(option, value)
728 {
729     var vlc = getVLC("vlc");
730     if( vlc )
731     {
732         if (option == 1)
733             vlc.video.logo.file(value);
734         if (option == 2)
735             vlc.video.logo.position = value;
736         val = parseInt(value);
737         if (option == 3)
738             vlc.video.logo.opacity = val;
739         if (option == 4)
740             vlc.video.logo.repeat = val;
741         if (option == 5)
742             vlc.video.logo.delay = val;
743         if (option == 6)
744             vlc.video.logo.x = val;
745         if (option == 7)
746             vlc.video.logo.y = val;
747     }
748 }
749
750 /* events */
751
752 function onOpen()
753 {
754     document.getElementById("state").innerHTML = "Opening...";
755     document.getElementById("PlayOrPause").value = "Pause";
756 }
757
758 function onBuffer()
759 {
760     document.getElementById("state").innerHTML = "Buffering...";
761     document.getElementById("PlayOrPause").value = "Pause";
762 }
763
764 function onPlay()
765 {
766     document.getElementById("state").innerHTML = "Playing...";
767     document.getElementById("PlayOrPause").value = "Pause";
768     onPlaying();
769 }
770
771 function onEnd()
772 {
773     document.getElementById("state").innerHTML = "End...";
774 }
775
776 var liveFeedText = ["Live", "((Live))", "(( Live ))", "((  Live  ))"];
777 var liveFeedRoll = 0;
778
779 function onPlaying()
780 {
781         var vlc = getVLC("vlc");
782         var info = document.getElementById("info");
783         if( vlc )
784         {
785             var mediaLen = vlc.input.length;
786             if( mediaLen > 0 )
787             {
788                 // seekable media
789                 info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(mediaLen);
790             }
791             else
792             {
793                 // non-seekable "live" media
794                 liveFeedRoll = liveFeedRoll & 3;
795                 info.innerHTML = liveFeedText[liveFeedRoll++];
796             }
797         }
798 }
799
800 function onPause()
801 {
802     document.getElementById("state").innerHTML = "Paused...";
803     document.getElementById("PlayOrPause").value = " Play ";
804 }
805
806 function onStop()
807 {
808     var vlc = getVLC("vlc");
809
810     document.getElementById("info").innerHTML = "-:--:--/-:--:--";
811     document.getElementById("state").innerHTML = "Stopped...";
812     document.getElementById("PlayOrPause").value = " Play ";
813 }
814
815 function onError()
816 {
817     var vlc = getVLC("vlc");
818
819     document.getElementById("state").innerHTML = "Error...";
820 }
821
822 //-->
823 </SCRIPT>
824 </BODY>
825 </HTML>