<html>
    <head>
        <title> KoanBox </title>
        <script src="extension.js"></script>
        <script>
            //-------------------------------------------------------------------------------------------------
            function JScript() {}
            JScript.prototype.run = function run(exp) {
                try{ return eval(exp); }
                catch(e) { KoanBox.Trace("[jscript] exception !!!" + exp + " " + e); }
            }

            //-------------------------------------------------------------------------------------------------
            function IsMCEEnabled()    { return true; }

            //-------------------------------------------------------------------------------------------------
            function onRemoteEvent(keyCode)
            {
                try {
                    return onRemoteEventEx(keyCode);
                }
                catch(e)
                {
                    KoanBox.Trace("[jscript] onRemoteEvent keycode " + keyCode);
                    ret = true;
                    ret = KoanBox.OnRemoteEvent(keyCode) != 0;
                    return ret;
                }
            }

            //-------------------------------------------------------------------------------------------------
            function onKeyUp(keyCode)
            {
                try {
                    return onKeyUpEx(keyCode);
                }
                catch(e)
                {
                    KoanBox.Trace("[jscript] onKeyUp keycode " + keyCode);
                    ret = true;
                    ret = KoanBox.OnKeyUp(keyCode) != 0;
                    return ret;
                }
            }

            //-------------------------------------------------------------------------------------------------
            function onKeyDown(keyCode)
            {
                try {
                    return onKeyDownEx(keyCode);
                }
                catch(e)
                {
                    KoanBox.Trace("[jscript] onKeyDown keycode " + keyCode);
                    ret = true;
                    ret = KoanBox.OnKeyDown(keyCode) != 0;
                    return ret;
                }
            }

            //-------------------------------------------------------------------------------------------------
            function onScaleEvent(vScale)
            {
                KoanBox.Trace("[jscript] onScaleEvent " + vScale);
                try            { KoanBox.onScaleEvent(vScale); }
                catch(e)    { KoanBox.Trace("[jscript] Exception in onScaleEvent !!!"); }
            }

            //-------------------------------------------------------------------------------------------------
            function ReEnterDirectXExclusiveMode()
            {
                KoanBox.Trace("[jscript] ReEnterDirectXExclusiveMode");
                return false;
            }

            //-------------------------------------------------------------------------------------------------
            var DirectXStopAttempts = 0;
            function StopDirectXExclusive()
            {
                DirectXStopAttempts += 1;
                var mcDirectX = false ;
                KoanBox.Trace("[jscript] StopDirectXExclusive.....");
                try {
                    window.external.MediaCenter.DirectXExclusive = false;
                    mcDirectX = window.external.MediaCenter.DirectXExclusive;
                }
                catch(e) {}

                if (mcDirectX==true)
                {
                    if (DirectXStopAttempts > 200 )
                        KoanBox.Trace("[jscript] Timeout: stop DirectXExclusive Mode !!!");
                    else
                        setTimeout("StopDirectXExclusive()",100);
                    KoanBox.Trace("[jscript] waiting StopDirectXExclusive ......");
                }
                else
                {
                    KoanBox.OnActivate(true);
                    KoanBox.Trace("[jscript] >>> end StopDirectXExclusive");
                }
            }

            //-------------------------------------------------------------------------------------------------
            function SetFocus()
            {
                KoanBox.Trace("[jscript] onfocus");
                try            { KoanBox.SetFocus(); }
                catch(e)    { KoanBox.Trace("[jscript] Can't KoanBox.SetFocus !!!"); }
            }

            //-------------------------------------------------------------------------------------------------
            var bFirstLoad = true;
            var sTempArgs = "";
            
            function onPreLoad()
            {
                sTempArgs = "";
                KoanBox.Trace("Enter PreLoad:"+window.external.MediaCenter.Context);
		try
		{            
		    var aCookie = document.cookie.split("; ");
		    var drv = "";
	            for (var i=0; i < aCookie.length; i++)
	            {
	                // a name/value pair (a crumb) is separated by an equal sign
	                var aCrumb = aCookie[i].split("=");
	                if ("parameter" == aCrumb[0]) 
	                drv = unescape(aCrumb[1]);
	            }
	            sTempArgs = drv;
	            document.cookie = "parameter=0; expires=Thu, 01-Jan-1970 00:00:01 GMT;";
	        }
	        catch(e) {}
                KoanBox.Trace("Leave PreLoad:"+sTempArgs);
            }
            
            function onLoad()
            {
                try { KoanBox.setActive(); }
                catch(e) {}

                try    { onPreLoad(); }
                catch(e) {}

                try {
                    KoanBox.Trace("[jscript] <<< Set DirectXExclusive = false");
                    window.external.MediaCenter.DirectXExclusive = false;
                    DirectXStopAttempts = 0;
                    setTimeout("StopDirectXExclusive()", 100);
                    KoanBox.Trace("[jscript] >>> Set DirectXExclusive = false");
                }
                catch(e) {}

                if( bFirstLoad )
                {
                    KoanBox.Trace("[jscript] <<< onLoad");
                    var args = ""
                    try
                    { 
                       if(sTempArgs != "")
                         { args = "/AutoResume "+sTempArgs + " /PlaybackState running"; } 
                       else
                         { args = window.external.MediaCenter.Context; }
                    }
                    catch(e)    { args = ""; }

                    try {
                        KoanBox.Run(args);
                        try { KoanBox.SetJScript(new JScript()); }
                        catch(e) {
                            KoanBox.Trace("[jscript] Run or SetJSCript Failed !!!");
                            window.external.MediaCenter.CloseApplication();
                        }
                    }
                    catch(e) {
                        try {
                            if (onNotifyDialog() == 0 ) { window.external.MediaCenter.CloseApplication(); }
                        }
                        catch(e) {
                            window.external.MediaCenter.CloseApplication();
                        }
                    }



                    KoanBox.Trace("[jscript] >>> end onload");
                    bFirstLoad = false;
                }
                else
                {
                    KoanBox.Trace("[jscript] <<< onReturnFromMediaCenter");
                    KoanBox.Trace("[jscript] >>> onReturnFromMediaCenter");
                }

                SetFocus();

                try    { onPostLoad(); }
                catch(e) {}
            }

            //-------------------------------------------------------------------------------------------------
            function onUnload()
            {
                KoanBox.Trace("[jscript] <<< onUnload");
                KoanBox.OnActivate(false);
                KoanBox.Trace("[jscript] >>> end onUnload");
            }

            //-------------------------------------------------------------------------------------------------
            // Initial MCE plugin state
            //-------------------------------------------------------------------------------------------------
            try    {
                window.external.MediaCenter.DirectXExclusive = false;
                window.external.MediaCenter.SharedViewPort.Visible = false;
            }
            catch(e) {}
        </script>
    </head>



    <style type="text/css">
        * {
        border: 0px;
        padding: 0px;
        margin: 0px;
        }
    </style>
    <body    onload = "onLoad()"
            onunload = "onUnload()"
            onkeyup = "onKeyUp(window.event.keyCode)"
            onkeydown = "onKeyDown(window.event.keyCode)"
            scroll = no
    >
        <script src="KoanBox.js"></script>
    </body>
</html>
