]> git.sesse.net Git - vlc/blobdiff - projects/activex/test.html
test.html: fix typo
[vlc] / projects / activex / test.html
index 2dc4f696a7d956a918f2474b92cea6d9c607a034..ff9645aa591fb01d5647499786ba7d67fd72bba8 100644 (file)
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
 <HTML>\r
-<TITLE>VLC ActiveX plugin test page</TITLE>\r
-<BODY>\r
+<TITLE>VLC Plugin test page</TITLE>\r
+<STYLE>\r
+  .inputTrackerInput {\r
+        height:20;\r
+        width:30;\r
+        font-family : Arial, Helvetica, sans-serif;\r
+        font-size : 12px;\r
+  }\r
+</STYLE>\r
+\r
+<SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/lib/LibCrossBrowser.js"></SCRIPT>\r
+<SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/lib/EventHandler.js"></SCRIPT>\r
+<SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/core/form/Bs_FormUtil.lib.js"></SCRIPT>\r
+<SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/components/slider/Bs_Slider.class.js"></SCRIPT>\r
+\r
+<SCRIPT language="JavaScript"><!--\r
+function init()\r
+{\r
+    inputTracker = new Bs_Slider();\r
+    if (inputTracker)\r
+    {\r
+        inputTracker.attachOnChange(onInputTrackerChange);\r
+        inputTracker.attachOnSlideStart(onInputTrackerScrollStart);\r
+        inputTracker.attachOnSlideEnd(onInputTrackerScrollEnd);\r
+        inputTracker.width         = 530 ;\r
+        inputTracker.height        = 15;\r
+        inputTracker.minVal        = 0;\r
+        inputTracker.maxVal        = 1.0;\r
+        inputTracker.valueDefault  = 0;\r
+        inputTracker.valueInterval = 1/530;\r
+        inputTracker.setDisabled(true);\r
+        inputTracker.imgDir   = 'blueshoes-4.5/javascript/components/slider/img/';\r
+        inputTracker.setBackgroundImage('aluminumalloyvolcanic/horizontal_background.gif', 'repeat');\r
+        inputTracker.setArrowIconLeft('aluminumalloyvolcanic/horizontal_backgroundLeft.gif', 2, 19);\r
+        inputTracker.setArrowIconRight('aluminumalloyvolcanic/horizontal_backgroundRight.gif', 2, 19);\r
+        inputTracker.setSliderIcon('aluminumalloyvolcanic/horizontal_knob.gif', 15, 19);\r
+        inputTracker.useInputField = 0;\r
+        inputTracker.draw('inputTrackerDiv');\r
+    }\r
+\r
+    if( navigator.appName.indexOf("Microsoft Internet")==-1 )\r
+    {\r
+        onVLCPluginReady()\r
+    }\r
+    else if( document.readyState == 'complete' )\r
+    {\r
+        onVLCPluginReady();\r
+    }\r
+    else\r
+    {\r
+        /* Explorer loads plugins asynchronously */\r
+        document.onreadystatechange=function()\r
+        {\r
+            if( document.readyState == 'complete' )\r
+            {\r
+                onVLCPluginReady();\r
+            }\r
+        }\r
+    }\r
+}\r
+\r
+function getVLC(name)\r
+{\r
+    if (window.document[name])\r
+    {\r
+        return window.document[name];\r
+    }\r
+    if (navigator.appName.indexOf("Microsoft Internet")==-1)\r
+    {\r
+        if (document.embeds && document.embeds[name])\r
+            return document.embeds[name];\r
+    }\r
+    else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)\r
+    {\r
+        return document.getElementById(name);\r
+    }\r
+}\r
+\r
+function onVLCPluginReady()\r
+{\r
+    updateVolume(0);\r
+}\r
+\r
+//--></SCRIPT>\r
+\r
+<BODY onLoad="init();">\r
 <TABLE>\r
 <TR><TD colspan="2">\r
 MRL:\r
 <INPUT size="90" id="targetTextField" value="">\r
 <INPUT type=submit value="Go" onClick="doGo(document.getElementById('targetTextField').value);">\r
+<INPUT type=submit value="Add" onClick="doAdd(document.getElementById('targetTextField').value);">\r
 </TD></TR>\r
-<TR><TD colspan="2">\r
+<TR><TD align="center" colspan="2">\r
 <!--\r
-Insert VideoLAN.VLCPlugin.2 activex control\r
+Insert VideoLAN.VLCPlugin.2\r
 -->\r
 <OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"\r
-        codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab#Version=0,8,6,0"\r
         width="640"\r
         height="480"\r
         id="vlc"\r
@@ -22,62 +107,294 @@ Insert VideoLAN.VLCPlugin.2 activex control
 <param name="AutoLoop" value="False" />\r
 <param name="AutoPlay" value="False" />\r
 <param name="Volume" value="50" />\r
+<param name="toolbar" value="true" />\r
 <param name="StartTime" value="0" />\r
+<EMBED pluginspage="http://www.videolan.org"\r
+       type="application/x-vlc-plugin"\r
+       version="VideoLAN.VLCPlugin.2"\r
+       width="640"\r
+       height="480"\r
+       toolbar="true"\r
+       text="Waiting for video"\r
+       name="vlc">\r
+</EMBED>\r
 </OBJECT>\r
 </TD></TR>\r
-<TR><TD>\r
+<TR><TD colspan="2">\r
+<TABLE><TR>\r
+<TD valign="top" width="550">\r
 <!--\r
-Insert MSComctlLib.Slider.2 activex control\r
+Insert Slider widget\r
 -->\r
-<OBJECT classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628"\r
-        width="540"\r
-        height="20"\r
-        id="slider"\r
-        events="True">\r
-<param name="TickStyle" value="3" />\r
-<param name="Min" value="0" />\r
-<param name="Max" value="0" />\r
-<param name="Value" value="0" />\r
-<param name="Enabled" value="False" />\r
-</OBJECT>\r
+<DIV id="inputTrackerDiv"</DIV>\r
 </TD><TD width="15%">\r
 <DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV>\r
+<DIV id="state" style="text-align:center">Stopped...</DIV>\r
+</TD></TR></TABLE>\r
 </TD></TR>\r
-<TR><TD colspan="2">\r
+<TR><TD>\r
 <INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'>\r
 <INPUT type=button value="Stop" onClick='doStop();'>\r
 &nbsp;\r
 <INPUT type=button value=" << " onClick='doPlaySlower();'>\r
+<INPUT type=button value="Reverse" onClick='doReverse();'>\r
 <INPUT type=button value=" >> " onClick='doPlayFaster();'>\r
 &nbsp;\r
-<INPUT type=button value="Show" onClick='document.getElementById("vlc").Visible = true;'>\r
-<INPUT type=button value="Hide" onClick='document.getElementById("vlc").Visible = false;'>\r
-&nbsp;\r
-<INPUT type=button id="VersionBut" value="Version" onClick='alert(document.getElementById("vlc").VersionInfo);'>\r
+<INPUT type=button value="Fullscreen" onClick='getVLC("vlc").video.toggleFullscreen();'>\r
+<INPUT type=button value="Version" onClick='alert("vlc " + getVLC("vlc").VersionInfo);'>\r
+<INPUT type=button value=" State " onClick='alert("state: " + getVLC("vlc").input.state);'>\r
+</TD><TD align="right">\r
 <SPAN style="text-align:center">Volume:</SPAN>\r
 <INPUT type=button value=" - " onClick='updateVolume(-10)'>\r
-<SPAN id="volumeTextField" style="text-align: center">--</SPAN>\r
+<SPAN id="volumeTextField" style="text-align:center">--</SPAN>\r
 <INPUT type=button value=" + " onClick='updateVolume(+10)'>\r
-<INPUT type=button value="Mute" onClick='document.getElementById("vlc").audio.toggleMute();'>\r
+<INPUT type=button value="Mute" onClick='getVLC("vlc").audio.toggleMute();'>\r
+</TD>\r
+</TR>\r
+<TR><TD>Playlist:\r
+<INPUT type=button value="Prev" onClick='getVLC("vlc").playlist.prev();'>\r
+<INPUT type=button value="Next" onClick='getVLC("vlc").playlist.next();'>\r
+<INPUT type=button value="Clear All" onClick='doPlaylistClearAll();'>\r
+    Aspect Ratio:\r
+    <SELECT readonly onChange='doAspectRatio(this.value)'>\r
+      <OPTION value="default">Default</OPTION>\r
+      <OPTION value="1:1">1:1</OPTION>\r
+      <OPTION value="4:3">4:3</OPTION>\r
+      <OPTION value="16:9">16:9</OPTION>\r
+      <OPTION value="221:100">221:100</OPTION>\r
+      <OPTION value="5:4">5:4</OPTION>\r
+    </SELECT>\r
+</TD><TD align="right">\r
+<INPUT type=button id="itemCount" value=" Items 0 " onClick='doItemCount();'>\r
+<INPUT size=4 value="" id="removeid"><INPUT type=submit value="Delete" onClick="doRemoveItem(document.getElementById('removeid').value);">\r
+</TD>\r
+</TR>\r
+<TR><TD>Audio Channel:\r
+  <SELECT readonly onClick='doAudioChannel(this.value);'>\r
+    <OPTION value=1>Stereo</OPTION>\r
+    <OPTION value=2>Reverse Stereo</OPTION>\r
+    <OPTION value=3>Left</OPTION>\r
+    <OPTION value=4>Right</OPTION>\r
+    <OPTION value=5>Dolby</OPTION>\r
+  </SELECT>\r
+</TD>\r
+<TD>\r
+<INPUT type=button value="current channel" onClick='alert(getVLC("vlc").audio.channel);'>\r
+</TD>\r
+</TR>\r
+<TR><TD> Audio Track:\r
+<INPUT type=button value=" + " onClick='doAudioTrack(1);'>\r
+<SPAN id="trackTextField" style="text-align:center">--</SPAN>\r
+<INPUT type=button value=" - " onClick='doAudioTrack(-1);'>\r
+<INPUT type=button value="current track" onClick='alert(getVLC("vlc").audio.description(vlc.audio.track));'>\r
+<INPUT type=button value="number of track" onClick='alert(getVLC("vlc").audio.count);'>\r
+</TD>\r
+<TD>\r
+<INPUT type=button value="set slider" onClick='doSetSlider();'>\r
+<INPUT type=button value="get position" onClick='doGetPosition();'>\r
+</TD>\r
+</TR>\r
+<TR>\r
+<TD>Video Subtitle:\r
+    <INPUT type=button value=" + " onClick='doSubtitle(1);'>\r
+    <SPAN id="spuTextField" style="text-align:center">--</SPAN>\r
+    <INPUT type=button value=" - " onClick='doSubtitle(-1);'>\r
+    <INPUT type=button value="current subtitle" onClick='alert(getVLC("vlc").subtitle.description(vlc.subtitle.track));'>\r
+    <INPUT type=button value="number of subtitle" onClick='alert(getVLC("vlc").subtitle.count);'>\r
+</TD>\r
+</TR>\r
+<TR>\r
+<TD>Deinterlacing:\r
+    <INPUT type=button value="BLEND" onClick='getVLC("vlc").video.deinterlaceEnable("blend");'>\r
+    <INPUT type=button value="  X  " onClick='getVLC("vlc").video.deinterlaceEnable("x");'>\r
+    <INPUT type=button value="Disable" onClick='getVLC("vlc").video.deinterlaceDisable();'>\r
+</TD>\r
+</TR>\r
+<TR>\r
+<TD>Marquee video filter:\r
+    <INPUT type=button value="Enable" onClick='getVLC("vlc").video.marquee.enable();'>\r
+    <INPUT type=button value="Disable" onClick='getVLC("vlc").video.marquee.disable();'>\r
+    <INPUT size=4 value="" id="marqueeIntValue">\r
+    <SELECT readonly onClick="doMarqueeOption(this.value,document.getElementById('marqueeIntValue').value);">\r
+        <OPTION value=1>Color</OPTION>\r
+        <OPTION value=2>Opacity</OPTION>\r
+        <OPTION value=3>Position</OPTION>\r
+        <OPTION value=4>Refresh</OPTION>\r
+        <OPTION value=5>Size</OPTION>\r
+        <OPTION value=6>Text</OPTION>\r
+        <OPTION value=7>Timeout</OPTION>\r
+        <OPTION value=8>X</OPTION>\r
+        <OPTION value=9>Y</OPTION>\r
+    </SELECT>\r
+</TD>\r
+</TR>
+<TR>\r
+<TD>Logo video filter:\r
+    <INPUT type=button value="Enable" onClick='getVLC("vlc").video.logo.enable();'>\r
+    <INPUT type=button value="Disable" onClick='getVLC("vlc").video.logo.disable();'>\r
+    <INPUT size=4 value="" id="logoIntValue">\r
+    <SELECT readonly onClick="doLogoOption(this.value,document.getElementById('logoIntValue').value);">\r
+        <OPTION value=1>File</OPTION>\r
+        <OPTION value=2>Position</OPTION>\r
+        <OPTION value=3>Opacity</OPTION>\r
+        <OPTION value=4>Repeat</OPTION>\r
+        <OPTION value=5>Delay</OPTION>\r
+        <OPTION value=6>X</OPTION>\r
+        <OPTION value=7>Y</OPTION>
+    </SELECT>\r
+</TD>\r
+</TR>\r\r
+<TR>\r
+<TD>\r
+    <INPUT type=button id="telx" value="Teletext off" onClick='doToggleTeletext();'>\r
+    Teletext page:\r
+    <INPUT size=4 value="100" id="telxPage" onClick='doTelxPage(document.getElementById("telxPage").value);'>\r
 </TD>\r
 </TR>\r
 </TABLE>\r
 <SCRIPT language="javascript">\r
 <!--\r
 \r
+var rate = 0;\r
 var prevState = 0;\r
 var monitorTimerId = 0;\r
-var sliderScrolling = false;\r
-var ignoreSliderChange = false;\r
+var inputTracker;\r
+var inputTrackerScrolling = false;\r
+var inputTrackerIgnoreChange = false;\r
+var telxState = false;\r
+\r
+function doSetSlider()\r
+{\r
+    var vlc = getVLC("vlc");\r
+\r
+    // set slider to new position\r
+    if( vlc )\r
+        vlc.input.time = (vlc.input.length/2);\r
+}\r
+\r
+function doGetPosition()\r
+{\r
+    var vlc = getVLC("vlc");\r
+\r
+    // set slider to new position\r
+    if (vlc)\r
+        alert( "position is " + vlc.input.time);\r
+}\r
+\r
+function doReverse(rate)\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+        vlc.input.rate = -1.0 * vlc.input.rate;\r
+}\r
+\r
+function doAudioChannel(value)\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+        vlc.audio.channel = parseInt(value);\r
+}\r
+\r
+function doAudioTrack(value)\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+    {\r
+        vlc.audio.track = vlc.audio.track + value;\r
+        document.getElementById("trackTextField").innerHTML = vlc.audio.track;\r
+    }\r
+}\r
+\r
+function doAspectRatio(value)\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+        vlc.video.aspectRatio = value;\r
+}\r
+\r
+function doSubtitle(value)\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+    {\r
+        vlc.subtitle.track = vlc.subtitle.track + value;\r
+        document.getElementById("spuTextField").innerHTML = vlc.subtitle.track;\r
+    }\r
+}\r
+\r
+function doTelxPage(value)\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+        vlc.video.teletext = parseInt(value);\r
+}\r
+\r
+function doToggleTeletext()\r
+{\r
+    var vlc = getVLC("vlc");\r
+\r
+    if( vlc )\r
+    {\r
+        vlc.video.toggleTeletext();\r
+        if (telxState)\r
+        {\r
+            document.getElementById("telx").innerHTML = "Teletext on";\r
+            telxState = true;\r
+        }\r
+        else\r
+        {\r
+            document.getElementById("telx").innerHTML = "Teletext off";\r
+            telxState = false;\r
+        }\r
+    }\r
+}\r
+\r
+function doItemCount()\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+    {\r
+        var count = vlc.playlist.items.count;\r
+        document.getElementById("itemCount").value = " Items " + count + " ";\r
+    }\r
+}\r
+\r
+function doRemoveItem(item)\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+        vlc.playlist.items.remove(item);\r
+}\r
+\r
+function doPlaylistClearAll()\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+    {\r
+        vlc.playlist.items.clear();\r
+        while( vlc.playlist.items.count > 0)\r
+        {\r
+            // wait till playlist empties.\r
+        }\r
+        doItemCount();\r
+    }\r
+}\r
 \r
 function updateVolume(deltaVol)\r
 {\r
-    var vlc = document.getElementById("vlc");\r
-    vlc.audio.volume += deltaVol;\r
-    document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";\r
-};\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+    {\r
+        vlc.audio.volume += deltaVol;\r
+        document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";\r
+    }\r
+}\r
+\r
 function formatTime(timeVal)\r
 {\r
+    if( typeof timeVal != 'number' )\r
+        return "-:--:--";\r
+\r
     var timeHour = Math.round(timeVal / 1000);\r
     var timeSec = timeHour % 60;\r
     if( timeSec < 10 )\r
@@ -91,27 +408,74 @@ function formatTime(timeVal)
         return timeHour+":"+timeMin+":"+timeSec;\r
     else\r
         return timeMin+":"+timeSec;\r
-};\r
+}\r
+\r
+function doState()\r
+{\r
+    var vlc = getVLC("vlc");\r
+    var newState = 0;\r
+\r
+    if( vlc )\r
+        newState = vlc.input.state;\r
+\r
+    if( newState == 0 )\r
+    {\r
+        // current media has stopped\r
+        onEnd();\r
+    }\r
+    else if( newState == 1 )\r
+    {\r
+        // current media is openning/connecting\r
+        onOpen();\r
+    }\r
+    else if( newState == 2 )\r
+    {\r
+        // current media is buffering data\r
+        onBuffer();\r
+    }\r
+    else if( newState == 3 )\r
+    {\r
+        // current media is now playing\r
+        onPlay();\r
+    }\r
+    else if( newState == 4 )\r
+    {\r
+        // current media is now paused\r
+        onPause();\r
+    }\r
+    else if( newState == 5 )\r
+    {\r
+        // current media has stopped\r
+        onStop();\r
+    }\r
+    else if( newState == 6 )\r
+    {\r
+        // current media has ended\r
+        onEnd();\r
+    }\r
+    else if( newState == 7 )\r
+    {\r
+        // current media encountered error\r
+        onError();\r
+    }\r
+}\r
+\r
 function monitor()\r
 {\r
-    var vlc = document.getElementById("vlc");\r
-    var newState = vlc.input.state;\r
-    if( vlc.log.messages.count > 0 )\r
+    var vlc = getVLC("vlc");\r
+    var newState = 0;\r
+\r
+    if( vlc )\r
     {\r
-        var iter = vlc.log.messages.iterator();\r
-        while( iter.hasNext )\r
-        {\r
-            var msg = iter.next();\r
-            alert( msg );\r
-        }\r
-        vlc.log.messages.clear();\r
+        newState = vlc.input.state;\r
     }\r
+\r
     if( prevState != newState )\r
     {\r
         if( newState == 0 )\r
         {\r
-            // current media has stopped \r
-            onStop();\r
+            // current media has stopped\r
+            onEnd();\r
         }\r
         else if( newState == 1 )\r
         {\r
@@ -128,11 +492,26 @@ function monitor()
             // current media is now playing\r
             onPlay();\r
         }\r
-        else if( vlc.input.state == 4 )\r
+        else if( newState == 4 )\r
         {\r
             // current media is now paused\r
             onPause();\r
         }\r
+        else if( newState == 5 )\r
+        {\r
+            // current media has stopped\r
+                onStop();\r
+        }\r
+        else if( newState == 6 )\r
+        {\r
+            // current media has ended\r
+            onEnd();\r
+        }\r
+        else if( newState == 7 )\r
+        {\r
+            // current media encountered error\r
+            onError();\r
+        }\r
         prevState = newState;\r
     }\r
     else if( newState == 3 )\r
@@ -140,168 +519,291 @@ function monitor()
         // current media is playing\r
         onPlaying();\r
     }\r
-    monitorTimerId = setTimeout("monitor()", 1000);\r
+    if( monitorTimerId == 0 )\r
+    {\r
+        monitorTimerId = setInterval("monitor()", 1000);\r
+    }\r
 };\r
 \r
 /* actions */\r
 \r
 function doGo(targetURL)\r
 {\r
-    var vlc = document.getElementById("vlc");\r
-    var options = new Array(":vout=directx");\r
-    vlc.playlist.clear();\r
-    //vlc.playlist.add(targetURL, null, options);\r
-    vlc.playlist.add(targetURL);\r
-    vlc.playlist.play();\r
-    vlc.log.verbosity = 3;\r
-    vlc.log.messages.clear();\r
-    if( monitorTimerId == 0 )\r
+    var vlc = getVLC("vlc");\r
+\r
+    if( vlc )\r
     {\r
-        monitor();\r
+        vlc.playlist.items.clear();\r
+        while( vlc.playlist.items.count > 0 )\r
+        {\r
+            // clear() may return before the playlist has actually been cleared\r
+            // just wait for it to finish its job\r
+        }\r
+        var options = [":rtsp-tcp"];\r
+        var itemId = vlc.playlist.add(targetURL,"",options);\r
+        options = [];\r
+        if( itemId != -1 )\r
+        {\r
+            // play MRL\r
+            vlc.playlist.playItem(itemId);\r
+            if( monitorTimerId == 0 )\r
+            {\r
+                monitor();\r
+            }\r
+        }\r
+        else\r
+        {\r
+            alert("cannot play at the moment !");\r
+        }\r
+        doItemCount();\r
     }\r
-};\r
-function doPlayOrPause()\r
+}\r
+\r
+function doAdd(targetURL)\r
 {\r
-    var vlc = document.getElementById("vlc");\r
-    if( vlc.playlist.isPlaying )\r
+    var vlc = getVLC("vlc");\r
+    var options = [":vout-filter=deinterlace", ":deinterlace-mode=linear"];\r
+    if( vlc )\r
     {\r
-        vlc.playlist.togglePause();\r
+        vlc.playlist.add(targetURL, "", options);\r
+        options = [];\r
+        doItemCount();\r
     }\r
-    else\r
+}\r
+\r
+function doPlayOrPause()\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
     {\r
-        vlc.log.messages.clear();\r
-        vlc.playlist.play();\r
-        if( monitorTimerId == 0 )\r
+        if( vlc.playlist.isPlaying )\r
         {\r
+            vlc.playlist.togglePause();\r
             monitor();\r
         }\r
+        else if( vlc.playlist.items.count > 0 )\r
+        {\r
+            vlc.playlist.play();\r
+            monitor();\r
+        }\r
+        else\r
+        {\r
+            alert('nothing to play !');\r
+        }\r
     }\r
-};\r
+}\r
+\r
 function doStop()\r
 {\r
-    document.getElementById("vlc").playlist.stop();\r
+    var vlc = getVLC("vlc");\r
+\r
+    if( vlc )\r
+        vlc.playlist.stop();\r
+\r
     if( monitorTimerId != 0 )\r
     {\r
-        clearTimeout(monitorTimerId);\r
+        clearInterval(monitorTimerId);\r
         monitorTimerId = 0;\r
     }\r
     onStop();\r
-};\r
+}\r
+\r
 function doPlaySlower()\r
 {\r
-    var vlc = document.getElementById("vlc");\r
-    vlc.input.rate = vlc.input.rate / 2;\r
-};\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+        vlc.input.rate = vlc.input.rate / 2;\r
+}\r
+\r
 function doPlayFaster()\r
 {\r
-    var vlc = document.getElementById("vlc");\r
-    vlc.input.rate = vlc.input.rate * 2;\r
-};\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
+        vlc.input.rate = vlc.input.rate * 2;\r
+}\r
 \r
 /* events */\r
 \r
 function onOpen()\r
 {\r
-    document.getElementById("info").innerHTML = "Opening...";\r
+    document.getElementById("state").innerHTML = "Opening...";\r
     document.getElementById("PlayOrPause").value = "Pause";\r
-};\r
+}\r
+\r
 function onBuffer()\r
 {\r
-    document.getElementById("info").innerHTML = "Buffering...";\r
+    document.getElementById("state").innerHTML = "Buffering...";\r
     document.getElementById("PlayOrPause").value = "Pause";\r
-};\r
+}\r
+\r
 function onPlay()\r
 {\r
-    onPlaying();\r
+    document.getElementById("state").innerHTML = "Playing...";\r
     document.getElementById("PlayOrPause").value = "Pause";\r
-};\r
-var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "((  Live  ))");\r
+    onPlaying();\r
+}\r
+\r
+function onEnd()\r
+{\r
+    document.getElementById("state").innerHTML = "End...";\r
+    doStop();\r
+}\r
+\r
+var liveFeedText = ["Live", "((Live))", "(( Live ))", "((  Live  ))"];\r
 var liveFeedRoll = 0;\r
+\r
 function onPlaying()\r
 {\r
-    if( ! sliderScrolling )\r
+    if( !inputTrackerScrolling )\r
     {\r
-        var slider = document.getElementById("slider");\r
-        if( vlc.input.length > 0 )\r
+        var vlc = getVLC("vlc");\r
+        var info = document.getElementById("info");\r
+        if( vlc )\r
         {\r
-            // seekable media\r
-            slider.Enabled = true;\r
-            slider.Max = slider.width;\r
-            ignoreSliderChange = true;\r
-            slider.Value = vlc.input.position*slider.width;\r
-            ignoreSliderChange = false;\r
-            document.getElementById("info").innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
-        }\r
-        else\r
-        {\r
-            // non-seekable "live" media\r
-            if( slider.Enabled )\r
+            var mediaLen = vlc.input.length;\r
+            inputTrackerIgnoreChange = true;\r
+            if( mediaLen > 0 )\r
+            {\r
+                // seekable media\r
+                if( inputTracker )\r
+                {\r
+                    if( inputTracker.maxVal == 1.0 )\r
+                    {\r
+                        inputTracker.setDisabled(false);\r
+                        inputTracker.maxVal = 1.0;\r
+                    }\r
+                    inputTracker.setValue(vlc.input.position);\r
+                }\r
+                info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(mediaLen);\r
+            }\r
+            else\r
             {\r
-                slider.Value = slider.Min;\r
-                slider.Enabled = false;\r
+                // non-seekable "live" media\r
+                if( inputTracker )\r
+                {\r
+                    if( inputTracker.maxVal != 0.0 )\r
+                    {\r
+                        inputTracker.maxVal = 0.0;\r
+                        inputTracker.setValue(0.0);\r
+                        inputTracker.setDisabled(true);\r
+                    }\r
+                }\r
+                liveFeedRoll = liveFeedRoll & 3;\r
+                info.innerHTML = liveFeedText[liveFeedRoll++];\r
             }\r
-            liveFeedRoll = liveFeedRoll & 3;\r
-            document.getElementById("info").innerHTML = liveFeedText[liveFeedRoll++];\r
+            inputTrackerIgnoreChange  = false;\r
         }\r
     }\r
-};\r
+}\r
+\r
 function onPause()\r
 {\r
+    document.getElementById("state").innerHTML = "Paused...";\r
     document.getElementById("PlayOrPause").value = " Play ";\r
-};\r
+}\r
+\r
 function onStop()\r
 {\r
-    vlc.log.verbosity = -1;\r
-    if( slider.Enabled )\r
+    var vlc = getVLC("vlc");\r
+\r
+    if( inputTracker )\r
     {\r
-        slider.Value = slider.Min;\r
-        slider.Enabled = false;\r
+        if( !inputTracker.disabled )\r
+        {\r
+            inputTracker.setValue(inputTracker.minVal);\r
+            inputTracker.setDisabled(true);\r
+        }\r
     }\r
+\r
     document.getElementById("info").innerHTML = "-:--:--/-:--:--";\r
+    document.getElementById("state").innerHTML = "Stopped...";\r
     document.getElementById("PlayOrPause").value = " Play ";\r
-};\r
-//-->\r
-</SCRIPT>\r
-<SCRIPT language="JScript">\r
-<!--\r
+}\r
 \r
-document.onreadystatechange=onVLCStateChange;\r
-function onVLCStateChange()\r
+function onError()\r
 {\r
-    if( document.readyState == 'complete' )\r
-    {\r
-        updateVolume(0);\r
-    }\r
-};\r
-function slider::Scroll()\r
+    var vlc = getVLC("vlc");\r
+\r
+    document.getElementById("state").innerHTML = "Error...";\r
+}\r
+\r
+function onInputTrackerScrollStart()\r
 {\r
-    var vlc = document.getElementById("vlc");\r
-    var slider = document.getElementById("slider");\r
-    var oldPos = vlc.input.position;\r
-    var newPos = slider.Value/slider.width;\r
-    if( (vlc.input.state == 3) && (oldPos != newPos) )\r
+    inputTrackerScrolling = true;\r
+}\r
+\r
+function onInputTrackerScrollEnd(inputTracker, value, pos)\r
+{\r
+    inputTrackerScrolling = false;\r
+}\r
+\r
+function onInputTrackerChange(inputTracker, value, pos)\r
+{\r
+    if( !inputTrackerIgnoreChange )\r
     {\r
-        vlc.input.position = newPos;\r
-        slider.Text = formatTime(vlc.input.time);\r
-        document.getElementById("info").innerHTML = slider.Text+"/"+formatTime(vlc.input.length);\r
+        var vlc = getVLC("vlc");\r
+        if( vlc )\r
+        {\r
+            if( (vlc.input.state == 3) && (vlc.input.position != value) )\r
+            {\r
+                var info = document.getElementById("info");\r
+                vlc.input.position = value;\r
+                info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
+            }\r
+        }\r
     }\r
-    sliderScrolling = true;\r
-};\r
-function slider::Change()\r
+}\r
+\r
+function doMarqueeOption(option, value)\r
 {\r
-    var vlc = document.getElementById("vlc");\r
-    var slider = document.getElementById("slider");\r
-    var oldPos = vlc.input.position;\r
-    var newPos = slider.Value/slider.width;\r
-    if( sliderScrolling )\r
+    var vlc = getVLC("vlc");\r
+    val = parseInt(value);\r
+    if( vlc )\r
     {\r
-        sliderScrolling = false;\r
+        if (option == 1)\r
+            vlc.video.marquee.color = val;\r
+        if (option == 2)\r
+            vlc.video.marquee.opacity = val;\r
+        if (option == 3)\r
+            vlc.video.marquee.position = value;\r
+        if (option == 4)\r
+            vlc.video.marquee.refresh = val;\r
+        if (option == 5)\r
+            vlc.video.marquee.size = val;\r
+        if (option == 6)\r
+            vlc.video.marquee.text = value;\r
+        if (option == 7)\r
+            vlc.video.marquee.timeout = val;\r
+        if (option == 8)\r
+            vlc.video.marquee.x = val;\r
+        if (option == 9)\r
+            vlc.video.marquee.y = val;\r
     }\r
-    else if( !ignoreSliderChange && (vlc.input.state == 3) && (oldPos != newPos) )\r
+}\r
+
+function doLogoOption(option, value)\r
+{\r
+    var vlc = getVLC("vlc");\r
+    if( vlc )\r
     {\r
-        vlc.input.position = newPos;\r
+        if (option == 1)\r
+            vlc.video.logo.file(value);\r
+        if (option == 2)\r
+            vlc.video.logo.position = value;\r
+        val = parseInt(value);\r
+        if (option == 3)\r
+            vlc.video.logo.opacity = val;\r
+        if (option == 4)\r
+            vlc.video.logo.repeat = val;\r
+        if (option == 5)\r
+            vlc.video.logo.delay = val;\r
+        if (option == 6)\r
+            vlc.video.logo.x = val;\r
+        if (option == 7)\r
+            vlc.video.logo.y = val;\r
     }\r
-};\r
+}\r
+\r
 //-->\r
 </SCRIPT>\r
 </BODY>\r