// var plugin = jsutil.define_namespace("jsutil.browser");

globals.flash_player_base_url = "/static/flash/";
globals.quicktime_player_base_url = "/static/quicktime/";
globals.video_players = new Object();
globals.video_player_controllers = new Object();

Object.extend(browser, {

    /* james arthur provided */

    get_browser_info : function (user_agent) {

        if (globals.browser_info)
            return globals.browser_info;

        if (user_agent == undefined)
          user_agent = navigator.userAgent;

        user_agent = user_agent.toLowerCase();
        var user_agent_length = user_agent.length;

		// defaults

        var browser_client = "unknown";
        var platform = "unknown";
        var version = "";
        var major_version = "";
        var minor_version = "";

        var is_windows = false;
        var is_mac = false;
        var is_unix = false;
        var is_ie = false;
        var is_ns = false;

		// split into stuff before parens and stuff in parens

        var pre_parens = "";
        var parenthesised = "";

        var i = user_agent.indexOf("(");

        if (i >= 0) {

            pre_parens = user_agent.substring(0,i).strip();
            parenthesised = user_agent.substring(i+1, user_agent_length);

            var j = parenthesised.indexOf(")");

            if (j >= 0)
              parenthesised = parenthesised.substring(0, j);

		} else {

            pre_parens = user_agent;

        }

        // first assume browser and version are in pre_parens
        // -- override later if we find them in the parenthesised stuff

        var browser_version = pre_parens;

        var tokens = parenthesised.split(";");
        var token = "";

		// now go through parenthesised tokens

        for (var i=0; i < tokens.length; i++){

            token = tokens[i].strip();

            // compatible - might want to reset from netscape
            if (token == "compatible") {

            } else if (token.indexOf("msie") >= 0) {
              browser_version = token;
            } else if (user_agent.indexOf("opera") >= 0) {
              browser_version = "opera";
            } else if ((token.indexOf("x11") >= 0) || (token.indexOf("sunos") >= 0) || (token.indexOf("linux") >= 0)) {
              platform = "unix";
              is_unix = true;
            } else if (token.indexOf("win") >= 0) {
              platform = token;
              is_windows = true;
            } else if ((token.indexOf("mac") >= 0) || (token.indexOf("ppc") >= 0)) {
              platform = token;
              is_mac = true;
			}

		}
	
        var msie_index = browser_version.indexOf("msie");

        if (msie_index >= 0)
            browser_version = browser_version.substring(
                msie_index, browser_version.length
                );

        var leftover = "";

        if (browser_version.substring(0, "mozilla".length) == "mozilla") {
            browser_client = "netscape";
            is_ns = true;
            leftover = browser_version.substring("mozilla".length+1, browser_version.length);
		} else if (browser_version.substring(0, "lynx".length) == "lynx") {
            browser_client = "lynx";
            leftover = browser_version.substring("lynx".length+1, browser_version.length);
        } else if (browser_version.substring(0, "msie".length) == "msie") {
            browser_client = "IE";
            is_ie = true;
            leftover = browser_version.substring("msie".length+1, browser_version.length);
		} else if (browser_version.substring(0, "microsoft internet explorer".length) == "microsoft internet explorer") {
            browser_client = "IE";
            is_ie = true;
            leftover = browser_version.substring("microsoft internet explorer".length+1, browser_version.length);
        } else if (browser_version.substring(0, "opera".length) == "opera") {
            browser_client = "Opera";
            is_ns = true;
            leftover = browser_version.substring("opera".length+1, browser_version.length);
		}

        if (is_ns) {

            if (user_agent.indexOf('konqueror') != - 1)
                browser_client = "Konqueror";

            if (user_agent.indexOf('safari') != - 1)
                browser_client = "Safari";

            if (user_agent.indexOf('omniweb') != - 1)
                browser_client = "Omniweb";

            if (user_agent.indexOf('opera') != - 1)
                browser_client = "Opera";

            if (user_agent.indexOf('icab') != - 1)
                browser_client = "Icab";

            if (user_agent.indexOf('aol') != - 1)
                browser_client = "AOL";

            if (user_agent.indexOf('firebird') != - 1)
                browser_client = "Firebird";

            if (user_agent.indexOf('firefox') != - 1)
                browser_client = "FireFox";

            if (user_agent.indexOf('gecko') != -1 && (user_agent.indexOf('gecko/') + 14) == user_agent.length)
                browser_client = "Mozilla";

            if (user_agent.indexOf('netscape') != -1)
                browser_client = "Netscape";
    
        }

        leftover = leftover.strip();

        // try to get version info out of leftover stuff

        var i = leftover.indexOf(" ");

        if (i >= 0) {
            version = leftover.substring(0, i);
        } else{
            version = leftover;
        }

        var j = version.indexOf(".");

        if (j >= 0) {
            major_version = parseInt(version.substring(0,j));
            minor_version = parseInt(version.substring(j+1, version.length));
        } else{
            major_version = parseInt(version);
        }

		// jb bits -- who is jb? james?

        var activex = false;
	
        if (window.GeckoActiveXObject) {
            try {
                var obj = new GeckoActiveXObject("WMPlayer.OCX.7");
                activex =  true;
			} catch (e) {
                activex =  false;
			}
	    } else if (window.ActiveXObject && is_windows) {
            try {
                var obj = new ActiveXObject("WMPlayer.OCX.7");
                activex =  true;
			} catch (e) {
                activex =  false;
			}
		} else if (is_ie && is_windows) {
            activex =  true; // bit of an assumption
		} else {
            activex = false;
		}


		if (navigator.plugins && navigator.mimeTypes.length) {
		    var supports_plugins = true;
		} else {
		    var supports_plugins = false;
		}

        globals.browser_info = {

          'browser': browser_client, 
          'platform': platform,
          'version': version,
          'major_version': major_version,
          'minor_version': minor_version,

          'is_windows': is_windows,
          'is_mac': is_mac,
          'is_unix': is_unix,
          'is_ie': is_ie,
          'is_ns': is_ns,

          'supports_activex': activex,
          'supports_plugins': supports_plugins

        };

    return globals.browser_info;

    },

    // awstats
    get_screen_info: function () {

      var screen = [screen.width, screen.height];

      if (navigator.appName != "Netscape") {
        var screen_depth = screen.colorDepth;
      } else {
        var screen_depth = screen.pixelDepth;
      }

      return [screen, screen_depth];

    },

    // james
    get_quicktime_version: function () {

        if (globals.quicktime_version)
            return globals.quicktime_version;

        var version = null;

        if (navigator.plugins && navigator.mimeTypes.length) {

            for (i=0; i < navigator.plugins.length; i++) {
                if (navigator.plugins[i].name.indexOf("QuickTime") >= 0) {
                    n = navigator.plugins[i].name;
                    version = parseInt(n.charAt(n.indexOf(".")-1));
                }
            }

			if (version != 0)
			    globals.quicktime_plugin_embed_mode = 'embed';

        } else {
            try{
                var test = new ActiveXObject('QuickTimeCheckObject.QuickTimeCheck.1');
                version = parseInt(test.QuickTimeVersion.toString(16).substring(0,3)) / 100 || 0;
			    globals.quicktime_plugin_embed_mode = 'object';
			} catch(e) {
            }
		}

        if (version == 0)
            version = null;

        globals.quicktime_version = version;

        return globals.quicktime_version;

    },

    query_support_via_mimetype: function (mimetype) {

        // navigator.mimeTypes.has_item

        if (globals.supported_mimetypes.indexOf(mimetype) != -1)
            if (navigator.mimeTypes[mimetype].enabledPlugin != null)
                return true;
        return false;

    },

    query_support_via_activex: function (klass) {

        var supported = false;

        document.writeln('<scr' + 'ipt language=VBScript>');
        document.writeln('on error resume next');
        document.writeln(' supported = IsObject(CreateObject("' + klass + '"))');
        document.writeln('</scr' + 'ipt>\n');

        if (supported)
            return true;

        return false;

    },

    // awstats_misc_tracker.js
    get_plugin_support_info: function () {

        if (globals.plugin_info)
            return globals.plugin_info;

        var client = browser.get_browser_info();

        try {
            var java = navigator.javaEnabled();
        } catch (e) {
            var java = false;
        }

        // should use client.supports_activex here ...
        if (client.is_ie && client.is_windows) {

            var director = browser.query_support_via_activex("SWCtl.SWCtl.1");
            var flash = browser.query_support_via_activex("ShockwaveFlash.ShockwaveFlash.1");
            var real = browser.query_support_via_activex("rmocx.RealPlayer G2 Control.1") || 
              browser.query_support_via_activex("rmocx.RealPlayer G2 Control.1") ||
              browser.query_support_via_activex("RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)") ||
              browser.query_support_via_activex("RealVideo.RealVideo(tm) ActiveX Control (32-bit)");
            var quicktime = browser.query_support_via_activex("QuickTimeCheckObject.QuickTimeCheck.1");
            var wmp = browser.query_support_via_activex("MediaPlayer.MediaPlayer.1");

            var pdf = false; 

            if (browser.query_support_via_activex("PDF.PdfCtrl.1")) {
			    pdf = true;
			} else if (browser.query_support_via_activex('PDF.PdfCtrl.5')) {
			    pdf = true;
		    } else if (browser.query_support_via_activex('PDF.PdfCtrl.6')) {
			    pdf = true;
			}

        }

        if (client.is_ns || !client.is_windows) {

            if (globals.supported_mimetypes == undefined) {
                sm = ''
                for (var i=0; i < navigator.mimeTypes.length; i++)
                    sm += navigator.mimeTypes[i].type.toLowerCase();
                globals.supported_mimetypes = sm;
            }

            var director = browser.query_support_via_mimetype("application/x-director");
            var flash = browser.query_support_via_mimetype("application/x-shockwave-flash");
            var real = browser.query_support_via_mimetype("audio/x-pn-realaudio-plugin");
            var quicktime = browser.query_support_via_mimetype("video/quicktime");
            var wmp = browser.query_support_via_mimetype("application/x-mplayer2");
            var pdf = browser.query_support_via_mimetype("application/pdf");

        }

        if (!flash)
            flash = browser.detect_plugin('Shockwave','Flash'); 

        if (!director)
            director = browser.detect_plugin('Shockwave','Director'); 

        if (!quicktime)
            quicktime = browser.detect_plugin('QuickTime');

        if (!real)
            real = browser.detect_plugin('RealPlayer');

        if (!wmp)
            wmp = browser.detect_plugin('Windows Media');

        globals.plugin_info = {
          'java': java,
          'director': director,
          'flash': flash,
          'real': real,
          'quicktime': quicktime,
          'wmp': wmp,
          'pdf': pdf
        }

        return globals.plugin_info;

    },

    // apple
    detect_plugin: function () {

        var plugin_found = false;

        if (navigator.plugins && navigator.plugins.length > 0) {

            var plugins_length = navigator.plugins.length;

            for (var i=0; i < plugins_length; i++ ) {

                var num_found = 0;

	            for (j=0; j < arguments.length; j++) {
                    if ((navigator.plugins[i].name.indexOf(arguments[j]) >= 0) || 
                        (navigator.plugins[i].description.indexOf(arguments[j]) >= 0)) {
                      num_found++;
                    }   
                }

                if (num_found == arguments.length) {
                    plugin_found = true;
                    break;
                }

            }

        }

        return plugin_found;

    },

    get_flash_player_major_version: function (version) {
        return parseInt(version.toString().split(".")[0]) || 0;
	},

    get_flash_version: function () {

        var version = 0;

        if (navigator.plugins && navigator.mimeTypes.length) {

            var plugin = navigator.plugins["Shockwave Flash"];

            if (plugin && plugin.description) {
                version = browser.get_flash_player_major_version(plugin.description.replace(/([a-z]|[A-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));
			}

			globals.flash_plugin_embed_mode = 'embed';

        } else{

                var known_versions = [1, 7, 8, 9, 10];
                // var known_versions = [8];
                var plugin;
				var current_version;

                for (i=0; i < known_versions.length; i++){

                    current_version = known_versions[i];

					globals.flash_plugin_embed_mode = 'object';

                    try{

                        // plugin = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + current_version);
                        plugin = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + current_version);

                        if (current_version == 1){	// 1 = 6 hack
                            version = 6;
						} else {
                            version = current_version;
						}

					} catch(e) {
                    }

				}

		}

        // if (version == 0)
        //     version = null;

        return version;

    },

	get_wmp_version: function () {

	    var version = 0;
		var client = browser.get_browser_info();

		if (client.is_windows && client.supports_activex) {

          try {
            if(window.ActiveXObject) {
              var player = new ActiveXObject("WMPlayer.OCX.7");
            } else if (window.GeckoActiveXObject) {
              var player = new GeckoActiveXObject("WMPlayer.OCX.7");
            }
          } catch (e) {
          }

          if (player) {
            version = parseInt(player.versionInfo);
            return version;
          }

        } else if (0) {

			var has_wmp7 = false;

			document.writeln("<div style=\"visibility: hidden\">");
			document.writeln("<ob" + "ject classid=\"CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6\"  codebase=\"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=7,0,0,1954\" height=\"1\" id=\"WMP7\" width=\"1\" viewastext=\"true\"" + "><" + "/" + "object" + ">");
			document.writeln("</div>");

			if (client.is_ie) {
			    document.writeln("<scr" + "ipt language=\"vbscript\">");
				document.writeln("has_wmp7 = false");
				document.writeln("on error resume next");
				document.writeln("has_wmp7 = (WMP7.URL = \"\")"); 
				document.writeln("</sc" + "ript>");
			} else {
			    document.writeln("<scr" + "ipt language=\"javascript\" type=\"text/javascript\">");
				document.writeln("try { var u = document.WMP7.URL; has_wmp7 = true;");
				document.writeln("} catch (e) { has_wmp7 = false; }");
				document.writeln("<"+"/scr"+"ipt>");
				//try {
				//    var u = document.WMP7.URL;
				//	has_wmp7 = true;
				//} catch (e) {
				//}
			}

			if (has_wmp7) {

			    document.writeln("<scr" + "ipt language=\"javascript\" type=\"text/javascript\">");
				document.writeln("if(typeof(has_wmp7) != \"undefined\" && has_wmp7 ) version = document.WMP7.versionInfo;");
				document.writeln("else {");
				document.writeln("version = 2;");
				document.writeln("} ");  
				document.writeln("<" + "/scr" + "ipt>");

				return parseInt(version);

			}

		}

		return version;

	},

    get_flash_html: function (player_uri, embed_type) {

	    if (embed_type == undefined)
		    embed_type = globals.flash_plugin_embed_mode;

		player_uri = globals.flash_player_base_url + player_uri;

		var id = "player";
		var width = "512";
		var height = "288";
		var params = {

		  swliveconnect: "true",
		  play: "true",
		  loop: "false",
		  menu: "false",
		  quality: "high",
		  scale: "exactfit"

		};

		var markup = "";

		if (embed_type == "embed") {

			markup = "<embed type=\"application/x-shockwave-flash\" src=\"" + player_uri + "\" width=\"" + width + "\" height=\"" + height + "\"";
			markup += " id=\"" + id + "\" name=\"" + id + "\" ";

			for (var key in params)
				markup += [key] + "=\"" + params[key] + "\" ";

			markup += "/>";

		} else if (embed_type == "object") {

			markup = "<object id=\"" + id + "\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"" + width + "\" height=\"" + height + "\">";
			markup += "<param name=\"movie\" value=\"" + player_uri + "\" />";

			for (var key in params)
				markup += "<param name=\"" + key + "\" value=\"" + params[key] + "\" />";

			markup += "</object>";

		}

        // if (globals.debug)
          // log(markup);

		return markup;

	},

	get_quicktime_html: function (player_version, player_uri, embed_type) {

	    if (embed_type == undefined)
		    embed_type = globals.quicktime_plugin_embed_mode;

	    if (player_uri == undefined)
		    player_uri = "";

		var version = "6,0,2,0";

		if (player_version >= 7) {
            player_uri = globals.quicktime_player_base_url + 'qt7.mov';
		    version = "7,0,0,0";
        } else {
            player_uri = globals.flash_player_base_url + 'qt6.mov';
        }
  

		var id = "player";
		var width = "512";
		var height = "288";

		var params = {
		  enablejavascript: "true",
		  type: "video/quicktime",
		  controller: "false",
		  kioskmode: "false",
		  autoplay: "true",
		  scale: "aspect"
		}

		var markup = "";

		if (embed_type == "embed") {
			markup = "<embed pluginspage=\"http://www.apple.com/quicktime/download/\" src=\"" + player_uri + "\" width=\"" + width + "\" height=\"" + height + "\"";
			markup += " id=\"" + id + "\" name=\"" + id + "\" ";
			for (var key in params)
				markup += [key] + "=\"" + params[key] + "\" ";
			markup += "/>";
		} else if (embed_type == "object") {
		    markup = "<object id=\"" + id + "\" classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\" codebase=\"http://www.apple.com/qtactivex/qtplugin.cab#version=" + version + "\" width=\"" + width + "\" height=\"" + height + "\">";
			markup += "<param name=\"movie\" value=\"" + player_uri + "\" />";
			for (var key in params)
			    markup += "<param name=\"" + key + "\" value=\"" + params[key] + "\" />";
			markup += "</object>";
		}

        //if (globals.debug)
        //log(escape((markup)));

		return markup;

	},
	
	get_wmp_html: function (version, w, h, player_uri) {

   	    var client = browser.get_browser_info();
		
	    if (player_uri == undefined)
		    player_uri = "";

		if (client.is_ie) {
		    var markup = "<object id=\"player\" classid=\"clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6\" type=\"application/x-oleobject\" codebase=\"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=" + version + "\" width=\"" + w + "\" height=\"" + h + "\"><param name=\"windowlessVideo\" value=\"true\" /><param name=\"showControls\" value=\"false\" /><param name=\"enableContextMenu\" value=\"false\" /><param name=\"autoStart\" value=\"true\" /><param name=\"showStatusBar\" value=\"false\" /><param name=\"stretchToFit\" value=\"true\" /><param name=\"uiMode\" value=\"none\" /><param name=\"url\" value=\"" + player_uri + "\" /></object>";	
		} else {
		    var markup = "<object id=\"player\" classid=\"clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6\" width=\"" + w + "\" height=\"" + h + "\"><param name=\"uiMode\" value=\"none\" /><param name=\"autoStart\" value=\"true\" /></object>"; // <param name=\"showControls\" value=\"0\" /><param name=\"stretchToFit\" value=\"true\" /><param name=\"url\" value=\"" + player_uri + "\" />
		}

        //if (globals.debug)
        //log(escape((markup)));

		return markup;

	},

    get_supported_video_players: function () {

        if (globals.supported_video_players)
            return globals.supported_video_players;

	    var choices = new Array();

		var client = browser.get_browser_info();
		var flash_version = browser.get_flash_version();

		if (flash_version >= 8) {
		    choices.push("Flash 8");
        }

		var quicktime_version = browser.get_quicktime_version();

        if (client.is_mac) {
          if (quicktime_version >= 7) {
		    choices.push("Quicktime 7");
          } else if (quicktime_version >= 6) {
		    choices.push("Quicktime 6");
          }
        }

		var wmp_version = browser.get_wmp_version();

        log('WMP');
        log(wmp_version);

		if (wmp_version >= 10) {
		    choices.push("Windows Media 9");
        } else if (flash_version >= 7) {
		    choices.push("Flash 7");
		} else if (wmp_version >= 9){
		    choices.push("Windows Media 9");
		} else if (wmp_version >= 8){
		    choices.push("Windows Media 8");
		} else if (wmp_version) {
		    choices.push("Windows Media 7");
		} else if (flash_version >= 6) {
		    choices.push("Flash 6");
		}

        globals.supported_video_players = choices;

        log(choices);

		return choices;

	},

	detect_ideal_video_player: function () {

		var choice = null;
		var client = browser.get_browser_info();
		var flash_version = browser.get_flash_version();

		if (flash_version >= 8) {
		    choice = "Flash 8";
		} else {
		    var quicktime_version = browser.get_quicktime_version();
			if (quicktime_version >= 7) {
			    choice = "Quicktime 7";
			} else if (quicktime_version >= 6) {
			    choice = "Quicktime 6";
			}
		}

		if (choice == null) {

		    var wmp_version = browser.get_wmp_version();

			if (wmp_version >= 9) {
			    choice = "Windows Media 9";
			} else if (wmp_version >= 8) {
			    choice = "Windows Media 8";
			} else if (wmp_version >= 1) {
			    choice = "Windows Media 7";
			}

		}

		if (choice == null && flash_version >= 7)
		    choice = "Flash 7";

		if (choice == null && flash_version >= 6)
		    choice = "Flash 6";

		return choice;

	},

	get_html_for_embedding_player: function (choice) {

        switch (choice) {

            case "Flash 8":
			    return browser.get_flash_html("player8.swf");

            case "Flash 7":
			    return browser.get_flash_html("player7.swf");

            case "Flash 6":
			    return browser.get_flash_html("player6.swf");

		    case "Quicktime 7":
			    return browser.get_quicktime_html(7);

		    case "Quicktime 6":
			    return browser.get_quicktime_html(6);

		    case "Windows Media 9":
			    return browser.get_wmp_html(9, "512", "288");

		    case "Windows Media 8":
			    return browser.get_wmp_html(8, "512", "288");

		    case "Windows Media 7":
			    return browser.get_wmp_html(7, "512", "288");

        }

		return "";

    },

    get_video_player: function (choice, container) {

	    if (choice == undefined)
		    choice = browser.detect_ideal_video_player();

        var player = globals.video_players[choice];

        if (player == undefined) {

            if (container == undefined)
                container = 'video';

            container = $.get(container);
            var markup = browser.get_html_for_embedding_player(choice);
            container.innerHTML = markup;

            player = browser.get_current_video_player();
            globals.video_players[choice] = player;

        }

        return player;

    },

    get_current_video_player: function (player) {

        if (player == undefined)
            player = 'player';

        try {
            return $.get(player);
        } catch (e) {
            return document.player; 
        }

    },

    get_video_player_controller: function (choice) {

        if (choice == undefined)
            return globals.current_video_player_controller;

        if (choice in globals.video_player_controllers) {
            return globals.video_player_controllers[choice];
        }
        
        try{
            console.log('>>> ' + 'hmm');
        }
        catch (e) {
            // pass
        }
        
        var player = browser.get_video_player(choice);
        var controller = browser.create_video_player_controller(choice);

        try{
            console.log('>>> ' + 'controller = ' + controller);
        }
        catch (e) {}

        return controller;

    },

    create_video_player_controller: function (choice, player) {

        try{
            console.log('>>> ok, creating a controller');
        }
        catch (e) {}

        // var controller = imprt("wrapper").createPlayer(choice, globals.video_players[choice]);

        if (choice.indexOf("Flash") >= 0) {
            var controller = imprt("wrapper").createPlayer(choice);
            globals.video_player_controllers[choice] = controller;
            return controller;
        }
        else {
            var controller = imprt("wrapper").createPlayer(choice, globals.video_players[choice]);
            // higher up, just in kase, race konditions exist
            globals.video_player_controllers[choice] = controller;
        }
        
        var sl = imprt('simplelistener');
        var l = new sl.ExampleListener();
        
        controller.addEventListener("positionChanged", l);
        controller.addEventListener("playingStopped", l);
        controller.addEventListener("playingStarted", l);
        controller.addEventListener("playingPaused", l);
        controller.addEventListener("downloadProgressChanged", l);
        
        return controller;
        
    }


});

var flash2js = function (version) {

    log('GOT FROM FLASH '+version);
    
    /*var controller = browser.get_video_player_controller(version);
    
    try{
        console.log('>>> ' + controller);
        console.log('>>> ' + controller.setPlayer);
    }
    catch (e) {
        // pass
    }*/
    
    var controller = globals.video_player_controllers[version];
    controller.setPlayer(globals.video_players[version]);

    var sl = imprt('simplelistener');
    var l = new sl.ExampleListener();

    controller.addEventListener("positionChanged", l);
    controller.addEventListener("playingStopped", l);
    controller.addEventListener("playingStarted", l);
    controller.addEventListener("playingPaused", l);
    controller.addEventListener("downloadProgressChanged", l);

    controller.handle_call_from_flash();

};

var flash2js_confirm = function (version) {

    log('GOT FROM FLASH -- CONFIRM '+version);

    var controller = globals.video_player_controllers[version];
    controller.handle_call_from_flash();

};
