<!--

var _jre = false;
var Platform = PLATFORM_WINDOWS;
var _ocx = false;
var _noPlayer = false;
var AppletName = 'appletPlayer';
//var OCXName = 'ocxPlayer';
var OCXName = 'appletPlayer';
var PlayerWidth = 0;
var PlayerHeight = 0;
var PlaybackWidth = 512;        // these can be changed to allow
var PlaybackHeight = 384;      // control of window mode playback size
var PlayInBrowser = false;
var JavaVersion = "";
var _macLoadedPercentage = 0;
var _IE7 = false;
var _UpdateStarted = false;
var _statusCheckTimer = 0;
var _browserIsSafari3 = false;

var _playlist = null;
var _activePlaylistTrackIdx = 0;

var _statusCheckTimer = 0;
var _loadCheckTimer = 0;

var PLATFORM_OTHER        = 0;
var PLATFORM_WINDOWS      = 1;
var PLATFORM_LINUX        = 2;
var PLATFORM_MACOSX_PPC   = 3;
var PLATFORM_MACOSX_INTEL = 4;
var PLATFORM_MAC          = 5;
var PLATFORM_SAFARI_3     = 6;

if (navigator.platform.indexOf("Win32") != -1)
    Platform = PLATFORM_WINDOWS;
else if (navigator.platform.indexOf("Linux") != -1)
    Platform = PLATFORM_LINUX;
else if (navigator.userAgent.indexOf("Mac OS X") != -1) {
    /*if(navigator.appVersion.indexOf("Safari") != -1 && navigator.appVersion.indexOf("Version/3") != -1)
        Platform = PLATFORM_SAFARI_3;
	else */
	if(navigator.appVersion.indexOf("Safari") != -1 && navigator.appVersion.indexOf("Version/3") != -1)
        _browserIsSafari3 = true;
	if(navigator.platform.indexOf("PPC") != -1)
        Platform = PLATFORM_MACOSX_PPC;
    else if(navigator.platform.indexOf("Intel") != -1)
        Platform = PLATFORM_MACOSX_INTEL;
}
else if (navigator.userAgent.indexOf("MSIE 5.2") != -1)
    Platform = PLATFORM_MACOSX_PPC;
else if (navigator.platform.indexOf("Mac") != -1)
    Platform = PLATFORM_MAC;
else
    Platform = PLATFORM_OTHER;

function getPlayerObject()
{
    if(_ocx)
        return document.getElementById(OCXName);
    else {
        if(Platform == PLATFORM_MACOSX_PPC || Platform == PLATFORM_MACOSX_INTEL)
            return document[AppletName];
        else
            return document.getElementById(AppletName);
    } // if
}

function getInspector()
{
    return document.getElementById("inspector");
}

function insertInspectorAppletTag()
{
    // this logic assumes that if the user is running any browser other than IE7 we at least try
    // creating the inspector applet
    // else if we are using IE7, only try the applet tag if we can successfully instantiate the
    // sun jre active control

    if(_IE7) {
        try {
            // only use the jre object tag if we are using IE7 on something other than XP (that is, Vista or Server 2003)

            if(navigator.userAgent.indexOf("NT 5.1") == -1) {
                document.write("<object MAYSCRIPT=true classid='clsid:8AD9C840-044E-11D1-B3E9-00805F499D93' ID='inspector' NAME='inspector' width = '0' height = '0' style='position:absolute'>");
                document.write("<param name = 'code' value = 'InspectorApplet.class' archive = 'player/InspectorApplet.jpeg' >");
                document.write("<param name = 'codebase' value = 'player' >");
                document.write("</object>");
            }
            else {
                document.write("<applet ID='inspector' NAME='inspector' codebase='player' code='InspectorApplet.class' archive = 'InspectorApplet.jpeg' width = '0' height = '0' style='position:absolute'></applet>");
            }
        }
        catch(e) {
        }
    }
    else
        document.write("<applet ID='inspector' NAME='inspector' codebase='player' code='InspectorApplet.class' archive = 'InspectorApplet.jpeg' width = '0' height = '0' style='position:absolute'></applet>");
}

function getPageElement(elementID)
{
    return document.getElementById(elementID);
}

function getRefToDiv(divID)
{
    if( document.layers )                                       //Netscape layers
        return document.layers[divID];
    if( document.getElementById )                               //DOM; IE5, NS6, Mozilla, Opera
        return document.getElementById(divID);
    if( document.all )                                          //Proprietary DOM; IE4
        return document.all[divID];
    if( document[divID] )                                       //Netscape alternative
        return document[divID];

    return false;
}

function startViaPopup(url, windowMode)
{
    window.open("launchclip.html?clipToPlay=" + url + "&windowMode=" + windowMode,
                "",
                "location=no, menubar=no, toolbar=no, status=no, width = 200, height = 30");
}

function initStatusCheck()
{
    if(_statusCheckTimer == 0) 
        _statusCheckTimer = setInterval("onCheckPlaybackStatus()", 500);
}

function playPressedFull(URL, inWindow, startFrame, endFrame, prebufferMS, splashDelay, showEndPrompt, embedded)
{
    try {
        if(playerFinishedLoading()) {
            // do this here as well to work around jre 1.4.0.1 bugs

            initStatusCheck();

            PlayInBrowser = embedded;

            getPlayerObject().terminate();

            if(inWindow)
                getPlayerObject().setFullscreenViewMode(0);
            else
                getPlayerObject().setFullscreenViewMode(1);

            getPlayerObject().setPlaybackDims(PlaybackWidth, PlaybackHeight);
            getPlayerObject().setEmbedded(embedded);
            getPlayerObject().setShowEndPrompt(showEndPrompt);
            getPlayerObject().setStartFrame(startFrame);
            getPlayerObject().setEndFrame(endFrame);
            getPlayerObject().setPrebufferMS(prebufferMS);
            getPlayerObject().setMediaURL(URL);
            getPlayerObject().setSplashDelay(splashDelay);
            //getPlayerObject().playClip();

            // call asynchronously to avoid GDI thread deadlocks...(really)
            var callstring = "getPlayerObject().playClip()";
            setTimeout(callstring, 200);
        }
        else
            alert("The Video Player has not finished loading");
    }
    catch(except) {
        alert("The Video Player has not finished loading");
    } // try - catch
}

function playPressed(URL, inWindow)
{
    playPressedFull(URL, inWindow, 0, 0, 5000, 0, false, PlayInBrowser);
}

// this is used for pay-per-view tracking

function playPressedPPV(URL, inWindow, startFrame, endFrame, prebufferMS, splashDelay, showEndPrompt, embedded, clientID)
{
    try {
        if(playerFinishedLoading()) {
            // do this here as well to work around jre 1.4.0.1 bugs

            initStatusCheck();

            getPlayerObject().setClientID(clientID);

            getPlayerObject().terminate();

            if(inWindow)
                getPlayerObject().setFullscreenViewMode(0);
            else
                getPlayerObject().setFullscreenViewMode(1);

            getPlayerObject().setPlaybackDims(PlaybackWidth, PlaybackHeight);
            getPlayerObject().setEmbedded(embedded);
            getPlayerObject().setShowEndPrompt(showEndPrompt);
            getPlayerObject().setStartFrame(startFrame);
            getPlayerObject().setEndFrame(endFrame);
            getPlayerObject().setPrebufferMS(prebufferMS);
            getPlayerObject().setMediaURL(URL);
            getPlayerObject().setSplashDelay(splashDelay);
            //getPlayerObject().playClip();

            // call asynchronously to avoid GDI thread deadlocks...(really)
            var callstring = "getPlayerObject().playClip()";
            setTimeout(callstring, 200);
        }
        else
            alert("The Video Player has not finished loading");
    }
    catch(except) {
        alert("The Video Player has not finished loading");
    } // try - catch
}

function playPressedOpenURL(URL, inWindow, PostPlayURL)
{
    try {
        if(playerFinishedLoading()) {
            // do this here as well to work around jre 1.4.0.1 bugs

            initStatusCheck();

            getPlayerObject().terminate();

            if(inWindow)
                getPlayerObject().setFullscreenViewMode(0);
            else
                getPlayerObject().setFullscreenViewMode(1);

            getPlayerObject().setPlaybackDims(PlaybackWidth, PlaybackHeight);
            getPlayerObject().setEmbedded(PlayInBrowser);
            getPlayerObject().setShowEndPrompt(false);
            getPlayerObject().setStartFrame(0);
            getPlayerObject().setEndFrame(0);
            getPlayerObject().setPrebufferMS(4000);
            getPlayerObject().setMediaURL(URL);
            getPlayerObject().setSplashDelay(0);
            getPlayerObject().setPlaybackParams("/RUN:\"" + PostPlayURL + "\"");
            //getPlayerObject().playClip();

            // call asynchronously to avoid GDI thread deadlocks...(really)
            var callstring = "getPlayerObject().playClip()";
            setTimeout(callstring, 200);
        }
        else
            alert("The Video Player has not finished loading");
    }
    catch(except) {
        alert("The Video Player has not finished loading");
    } // try - catch
}

function stopPressed()
{
    getPlayerObject().terminate();
}

function pausePressed()
{
    if(getPlayerObject().getPlaybackStatus() != 2) // paused
        getPlayerObject().pause();
}

function resumePressed()
{
    if(getPlayerObject().getPlaybackStatus() == 2) // paused
        getPlayerObject().resume();
}

function fullscreenPressed()
{
    //getPlayerObject().setEscapeExitFullscreen(true);
    //getPlayerObject().toggleFullscreen();
    getPlayerObject().setFullscreenViewMode(1);
}

// notification method provided for OS X applet implementation to call as we can't
// use standard liveconnect calls from JavaScript to Java on that platform

function setMacLoadedPercentage(percent)
{
    _macLoadedPercentage = percent;
}

function playerFinishedLoading()
{
    if(_ocx) {
        try {
            if(getPlayerObject().LibDownloadProgress < 100) {
                return false;
            }
            else
                return true;
        }
        catch(except) {
            return false;
        }
    }
    else {
        if(Platform == PLATFORM_MACOSX_PPC || Platform == PLATFORM_MACOSX_INTEL) {
			/*
            if(_macLoadedPercentage < 100)
                return false;
            else
                return true;
			*/
			return true;
        }
        else {
            try {
                if(getPlayerObject().getLoadedPercentage() < 100) 
                    return false;
                else
                    return true;
            }
            catch(except) {
                return false;
            } 
        } 
    }
}

function loadProgressUpdater() {
    if(_ocx) {
        try {
            if(getPlayerObject().LibDownloadProgress < 100) {
                getRefToDiv("LoadProgress").style.display = "block";
                getRefToDiv("LoadProgress").innerHTML = getPlayerObject().LibDownloadProgress + "% loaded";
                //setTimeout("loadProgressUpdater()", 1000);
            }
            else
                getRefToDiv("LoadProgress").innerHTML = "";
        }
        catch(except) {
            getRefToDiv("LoadProgress").innerHTML = "";
        } // try - catch
    }
    else {
        if(Platform == PLATFORM_MACOSX_PPC || Platform == PLATFORM_MACOSX_INTEL)
            getRefToDiv("LoadProgress").innerHTML = _macLoadedPercentage + "% loaded";
        else {
            try {
                if(getPlayerObject().getLoadedPercentage() < 100) {
                    getRefToDiv("LoadProgress").style.display = "block";
                    getRefToDiv("LoadProgress").innerHTML = getPlayerObject().getLoadedPercentage() + "% loaded";
                    //setTimeout("loadProgressUpdater()", 1000);
                }
                else
                    getRefToDiv("LoadProgress").innerHTML = "";
            }
            catch(except) {
                getRefToDiv("LoadProgress").innerHTML = "";
            } // try - catch
        } // if
    } // if
}

function ResizePlayer()
{
	try {
		var agent = navigator.userAgent.toLowerCase();

		// if we are on windows and using a version of java then we should set the player background
		// colour to match that of the page

		if(!_ocx && Platform == PLATFORM_WINDOWS) {
			var bgcolour = document.bgColor;
			//bgcolour = "#ff0000";

			// believe it or not, the MS Sun JRE must have the colour specified differently from the MS Java
			// VM... erk

			// MS Java colour string order: BGR
			// Sun Java colour string order: RGB

			if(_jre) {
				var colourObject = getPlayerObject().getBackground();
				colourObject = colourObject.decode("0x00" + bgcolour.substring(1,3) + bgcolour.substring(3,5) + bgcolour.substring(5,7));
				getPlayerObject().setBackground(colourObject);
			}
			else {					
				var hexcolour = Number("0x00" + bgcolour.substring(5,7) + bgcolour.substring(3,5) + bgcolour.substring(1,3));
				getPlayerObject().setBackground(hexcolour);
			}
		}
	}
	catch(except) {
	}

	getPlayerObject().width = PlayerWidth;
	getPlayerObject().height = PlayerHeight;
}

function PreloadDismiss(controlName)
{
    var agent = navigator.userAgent.toLowerCase();

    // even if the final applet is supposed to have zero width and height, MSIE wont
    // recognise the applet tag if they are initially so
    // the solution is to create the original tag with a width and height >= 1 and then
    // later set their true width and height

    try {
		if(_loadCheckTimer != 0) {
			clearInterval(_loadCheckTimer);
			_loadCheckTimer = 0;
		}

        // do this here as well to work around jre 1.4.0.1 bugs

        if(!_browserIsSafari3 && JavaVersion.indexOf("1.4.0_01") == -1) {
            // start the status timer now if we are running in any other environment
            // otherwise the various play methods will initialise it
     
            initStatusCheck();
        }

		ResizePlayer();
    }
    catch(except) {
        // do nothing
    } // try - catch

    getRefToDiv("PreloadMessage").style.display = "none";
}

function checkLoad()
{
    if(_noPlayer) {
    }
    else {
        if(_ocx) {
            try {
                if(getPlayerObject().LibDownloadProgress > 99) {
                    PreloadDismiss(OCXName);
                }
                else {
                    getRefToDiv("PreloadMessage").style.display = "block";
                    loadProgressUpdater();
                    //setTimeout('checkLoad()', 1000);
                } // if
            }
            catch(except) {
                getRefToDiv("PreloadMessage").style.display = "block";
                //setTimeout('checkLoad()', 1000);
            } // try - catch
        }
        else {
            try {
                // have to work around a new bug in Safari 1.3
                // which causes applet accesses to lock the browser
                // hard

                if(Platform == PLATFORM_MACOSX_PPC || Platform == PLATFORM_MACOSX_INTEL) {
                    if(_browserIsSafari3 || _macLoadedPercentage > 99)
                        PreloadDismiss(AppletName);
                    else {
						getRefToDiv("PreloadMessage").style.display = "block";
						loadProgressUpdater();
						//setTimeout('checkLoad()', 1000);
                    } // if
                }
                else if(true || JavaVersion.indexOf("1.4.0_01") == -1) {
                        if(getPlayerObject().getLoadedPercentage() > 99) {
                            PreloadDismiss(AppletName);
                        }
                        else {
                            getInspector().style.display = "none";
                            getRefToDiv("PreloadMessage").style.display = "block";
                            loadProgressUpdater();
                            //setTimeout('checkLoad()', 1000);
                        } // if
                    }
                else {
                    loadProgressUpdater();
                    PreloadDismiss(AppletName);
                } // if
            }
            catch(except) {
                // the browser appears to handle the security cert acceptance process synchronously when using the JRE
                // so we don't have a problem with calling this while the dialog is pending, while the MSJVM does...
                // so in IE we should leave the progress indicator visible and keep the checking processing running while in mozilla
                // we should simply remove the progress indicator when we get here

                if(_jre) {
                     loadProgressUpdater();
                    PreloadDismiss(AppletName);
                }
                else {
                    // this bit is reached as part of the normal checking process when the client is running
                    // IE + MSJVM

                    getRefToDiv("PreloadMessage").style.display = "block";
                    loadProgressUpdater();
					// setTimeout("checkLoad()", 500);
                } // if
            } // try - catch
        } // if
    } // if
}

function delayedPlay(url, inWindow)
{
    if(_noPlayer) {
    }
    else {
        if (false && _ocx) {
            try {
                document[OCXName].MediaURL;
                playPressed(url, inWindow);
            }
            catch(except) {
                setTimeout("delayedPlay('" + url + "'," + inWindow + ")", 1000);
            } // try - catch
        }
        else {
            try {
                // for older versions
                getPlayerObject().setMediaURL("");

                playPressed(url, inWindow);
            }
            catch(except) {
                setTimeout("delayedPlay('" + url + "'," + inWindow + ")", 1000);
            } // try - catch
        } // if
    } // if
}

function videoPlayerLoaderAutoPlay(autoPlayURL, inWindow, embedded)
{
    var params = "";

    //params = "/NOEND /size:" + PlaybackWidth + "x" + PlaybackHeight

    videoPlayerLoaderAutoPlayFull(autoPlayURL, 0, 0, "", false, 5000, inWindow, embedded, params);
}

function videoPlayerLoaderAutoPlayFull(autoPlayURL, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded, params)
{
    //setTimeout("checkLoad()", 1000);

    getRefToDiv('VideoPlayerSection').innerHTML = getPlayerScriptFull(autoPlayURL,
                                                                        params,
                                                                        startFrame,
                                                                        endFrame,
                                                                        clientID,
                                                                        showEndPrompt,
                                                                        prebufferMS,
                                                                        inWindow,
                                                                        embedded);

    _loadCheckTimer = setInterval("checkLoad()", 1000);
	setTimeout("initStatusCheck()", 1000);
}

function videoPlayerLoaderAutoPlayFromFrame(autoPlayURL, inWindow, withinBrowser, fromFrame)
{
    var params = "";

    PlayInBrowser = withinBrowser;

    if(inWindow)
        params = "/W /NOEND /size:" + PlayerWidth + "x" + PlayerHeight + " /FRAME:" + fromFrame
    else
        params = "/NOEND /size:" + PlayerWidth + "x" + PlayerHeight + " /FRAME:" + fromFrame

    _loadCheckTimer = setInterval("checkLoad()", 1000);
	setTimeout("initStatusCheck()", 1000);
    getRefToDiv('VideoPlayerSection').innerHTML = getPlayerScript(autoPlayURL, params);
}

function getPlayerScript(autoPlayURL, params)
{
    return getPlayerScriptFull(autoPlayURL, params, PlaybackWidth, PlaybackHeight, 0, 0, "", false, 5000, false, false, params);
}

function generateAutoPlayParams(autoPlayURL, isOCX, width, height, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded, otherParams)
{
    var TagValue = "";

    if(autoPlayURL != null && autoPlayURL.length > 0) {
        TagValue = TagValue + ('<param name="AUTOPLAY_URL" value="' + autoPlayURL + '">');

        if(otherParams != null && otherParams.length > 0)
            TagValue = TagValue + ('<param name="AUTOPLAY_PARAMS" value="' + otherParams + '">');

        if(inWindow)
            TagValue = TagValue + ('<param name="FULLSCREEN_VIEWMODE" value="' + 0 + '">');
        else
            TagValue = TagValue + ('<param name="FULLSCREEN_VIEWMODE" value="' + 1 + '">');

        TagValue = TagValue + ('<param name="START_FRAME" value="' + startFrame + '">');
        TagValue = TagValue + ('<param name="END_FRAME" value="' + endFrame + '">');
        TagValue = TagValue + ('<param name="CLIENT_ID" value="' + clientID + '">');
        TagValue = TagValue + ('<param name="SHOW_END_PROMPT" value="' + showEndPrompt + '">');
        TagValue = TagValue + ('<param name="PREBUFFER_MS" value="' + prebufferMS + '">');
    }

    TagValue = TagValue + ('<param name="PLAYBACK_WIDTH" value="' + width + '">');
    TagValue = TagValue + ('<param name="PLAYBACK_HEIGHT" value="' + height + '">');

    if(embedded)
        TagValue = TagValue + ('<param name="EMBEDDED" value="true">');

    return TagValue;
}

function getPlayerScriptFull(autoPlayURL, params, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded)
{
    var OCXClassID = '126EEDB7-24A2-43ea-A53D-9B7067BD2AB8';
    var OCXArchive = 'player/player_ocx.jpeg';
    var MSJVMArchive = 'player/player_jni_ms.jpeg';
    var MacJVMArchive = 'player/player_jni_osx.jpeg';
    var MacIA32JVMArchive = 'player/player_jni_osx_ia32.jpeg';
    var SunJVMArchive = 'player/player_jni_win32.jpeg';
    var SunJRE_1_6_Alternate = 'player/player_jni_win32.jar';   // j2se 1.6 doesn't check for certs in archives that don't
                                                               // end in .jar
    var hackWidth = 1;
    var hackHeight = 1;
    var ComponentLoaded = false;
    var FailPageURL = "http://www.vividas.com/support/streamingsupport.html";

    var tailSlash = location.href.substring (0,location.href.length).lastIndexOf('/');
    var tailQuest = location.href.substring (0,location.href.length).lastIndexOf('?');

    var eoURL = 0;

    if(tailQuest != -1 && tailQuest < tailSlash)
        eoURL = location.href.substring(0, tailQuest).lastIndexOf('/');
    else
        eoURL = tailSlash;

    var BackgroundURL = unescape(location.href.substring(0, eoURL)) + "/images/orientedplayerbg.jpeg";
    //var BackgroundURL = "";
    var ResourcesURL = unescape(location.href.substring(0, eoURL)) + "/images/resources.jpeg";
    var SplashURL = unescape(location.href.substring(0, eoURL)) + "/images/splash.jpeg";
    //var SplashURL = "";
    var EndscreenURL = unescape(location.href.substring(0, eoURL)) + "/images/endscreen.jpeg";
    var LibURL = unescape(location.href.substring(0, eoURL))  + "/player/win32lib.jpeg";
    var MSLibURL = unescape(location.href.substring(0, eoURL))  + "/player/win32lib.jpeg";
    var OCXLibURL = unescape(location.href.substring(0, eoURL))  + "/player/ocxlib.jpeg";
    var OSXLibURL = unescape(location.href.substring(0, eoURL))  + "/player/osxlib.jpeg";
    var OSXIA32LibURL = unescape(location.href.substring(0, eoURL))  + "/player/osxia32lib.jpeg";

    var browsername = navigator.appName;
    var TagValue = "";
    var agent = navigator.userAgent.toLowerCase();

    _noPlayer = false;

    if(getInspector() != null) {
        _ocx = false;

        try {
            if(getInspector().isMSJVM()) {
                _jre = false;
            }
            else {
                _jre = true;
            } // if

            JavaVersion = getInspector().getJavaVersion();

            getInspector().style.display = "none";

            if(JavaVersion.indexOf("1.6") != -1)
                SunJVMArchive = SunJRE_1_6_Alternate;
        }
        catch(except) {
            if(agent.indexOf("msie") != -1) {
                _jre = false;
                _ocx = true;
            }
            else
                _jre = true;
        } // try - catch
    }
    else {
            _jre = false;
            _ocx = true;
    } // if

    if(Platform == PLATFORM_WINDOWS) {
        if(agent.indexOf("opera") != -1) {
            TagValue = ('<APPLET MAYSCRIPT=true ID = "' + AppletName + '" NAME = "' + AppletName + '" CODE = PlayerApplet.class WIDTH = "' + PlayerWidth + '" HEIGHT = ' + (PlayerHeight) + '" ARCHIVE = "' + SunJVMArchive + '" >');
            TagValue = TagValue + ('<param name="SPLASH_URL" value="' + SplashURL + '">');
            TagValue = TagValue + ('<param name="RESOURCES_URL" value="' + ResourcesURL + '">');
            TagValue = TagValue + ('<param name="LIB_URL" value="' + LibURL + '">');
            TagValue = TagValue + ('<param name="BACKGROUND_URL" value="' + BackgroundURL + '">');
            TagValue = TagValue + ('<param name="ENDSCREEN_URL" value="' + EndscreenURL + '">');

            TagValue = TagValue + generateAutoPlayParams(autoPlayURL, false, PlaybackWidth, PlaybackHeight, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded, params);

            TagValue = TagValue + ('</APPLET>');

            return TagValue;
        }
        else if(agent.indexOf("msie") != -1) {
            //_jre = false;
            //_ocx = true;

            if(_jre) {
                // tag for Sun JRE in IE

                TagValue = ('<object MAYSCRIPT=true classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" ID = "' + AppletName + '"');
                TagValue = TagValue + ('height="' + hackHeight + '" width="' + hackWidth + '" >');
                TagValue = TagValue + ('<param name="code" value="PlayerApplet.class">');
                TagValue = TagValue + ('<param name = "archive" value = "' + SunJVMArchive + '">');
                TagValue = TagValue + ('<param name="NAME" value="' + AppletName + '">');
                TagValue = TagValue + ('<param name="ID" value="' + AppletName + '">');
                TagValue = TagValue + ('<param name="SPLASH_URL" value="' + SplashURL + '">');
                TagValue = TagValue + ('<param name="RESOURCES_URL" value="' + ResourcesURL + '">');
                TagValue = TagValue + ('<param name="BACKGROUND_URL" value="' + BackgroundURL + '">');
                TagValue = TagValue + ('<param name="ENDSCREEN_URL" value="' + EndscreenURL + '">');
                TagValue = TagValue + ('<param name="LIB_URL" value="' + LibURL + '">');

                TagValue = TagValue + generateAutoPlayParams(autoPlayURL, false, PlaybackWidth, PlaybackHeight, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded, params);

                TagValue = TagValue + ('</object>');

                return TagValue;
            }
            else if(_ocx) {
                // tag for ocx

                TagValue = ('<object id="' + OCXName + '"');
                TagValue = TagValue + ('width="' + hackWidth + '"');
                TagValue = TagValue + ('height="' + hackHeight + '"');
                TagValue = TagValue + ('classid="CLSID:' + OCXClassID + '"');
                TagValue = TagValue + ('codebase="' + OCXArchive + '" ');
                TagValue = TagValue + ('MAYSCRIPT=true >');

                TagValue = TagValue + ('<param name="cabinets" value="ocx_play.ocx">');
                TagValue = TagValue + ('<param name="cabbase" value="ocx_play.ocx">');
                TagValue = TagValue + ('<param name="NAME" value="' + OCXName + '">');
                TagValue = TagValue + ('<param name="ID" value="' + OCXName + '">');
                TagValue = TagValue + ('<param name="LIB_URL" value="' + OCXLibURL + '">');
                TagValue = TagValue + ('<param name="SPLASH_URL" value="' + SplashURL + '">');
                TagValue = TagValue + ('<param name="RESOURCES_URL" value="' + ResourcesURL + '">');
                TagValue = TagValue + ('<param name="BACKGROUND_URL" value="' + BackgroundURL + '">');
                TagValue = TagValue + ('<param name="ENDSCREEN_URL" value="' + EndscreenURL + '">');

                TagValue = TagValue + generateAutoPlayParams(autoPlayURL, true, PlaybackWidth, PlaybackHeight, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded, params);
                TagValue = TagValue + ('<param name="BACKGROUND_URL" value="' + BackgroundURL + '">');

                TagValue = TagValue + ('</object>');
                return TagValue;
            }
            else {
                // tag for MSJVM

                TagValue = ('<APPLET MAYSCRIPT=true ALIGN="absmiddle" ID = "' + AppletName + '" NAME = "' + AppletName + '" CODE = PlayerApplet.class WIDTH = "' + hackWidth + '" HEIGHT = "' + hackHeight + '" ARCHIVE = "' + MSJVMArchive + '" > ');
                TagValue = TagValue + ('<param name="cabinets" value="' + MSJVMArchive + '"> ');
                TagValue = TagValue + ('<param name="SPLASH_URL" value="' + SplashURL + '">');
                TagValue = TagValue + ('<param name="RESOURCES_URL" value="' + ResourcesURL + '">');
                TagValue = TagValue + ('<param name="BACKGROUND_URL" value="' + BackgroundURL + '">');
                TagValue = TagValue + ('<param name="ENDSCREEN_URL" value="' + EndscreenURL + '">');
                TagValue = TagValue + ('<param name="LIB_URL" value="' + MSLibURL + '">');
				
                TagValue = TagValue + generateAutoPlayParams(autoPlayURL, false, PlaybackWidth, PlaybackHeight, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded, params);

                TagValue = TagValue + ('</APPLET> ');

                return TagValue;
            } // if
        }
        else {
            // tag to setup applet in gecko (aka Mozilla) based browsers

            TagValue = ('<APPLET MAYSCRIPT=true ');
            TagValue = TagValue + ('code="PlayerApplet.class" ');
            TagValue = TagValue + ('archive="' + SunJVMArchive + '" ');
            TagValue = TagValue + ('ID = "' + AppletName + '" ');
            TagValue = TagValue + ('height="' + hackHeight + '" ');
            TagValue = TagValue + ('width="'+ hackWidth +'" > ');

            TagValue = TagValue + ('<param name="LIB_URL" value="' + LibURL + '">');
            TagValue = TagValue + ('<param name="SPLASH_URL" value="' + SplashURL + '">');
            TagValue = TagValue + ('<param name="RESOURCES_URL" value="' + ResourcesURL + '">');
            TagValue = TagValue + ('<param name="BACKGROUND_URL" value="' + BackgroundURL + '">');
            TagValue = TagValue + ('<param name="ENDSCREEN_URL" value="' + EndscreenURL + '">');

            TagValue = TagValue + generateAutoPlayParams(autoPlayURL, false, PlaybackWidth, PlaybackHeight, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded, params);

            TagValue = TagValue + ('</applet> ');

            return TagValue;
        } // if
    }
    else if(Platform == PLATFORM_MACOSX_PPC) {
        TagValue = '<APPLET MAYSCRIPT=true code = "PlayerApplet.class" archive = "' + MacJVMArchive + '" ID="' + AppletName + '" NAME="' + AppletName + '" WIDTH="' + PlaybackWidth + '" HEIGHT="' + PlaybackHeight + '"> <param name = "archive" value = "' + MacJVMArchive + '"> <param name = "code" value = "PlayerApplet.class">';

        TagValue = TagValue + ('<param name="SPLASH_URL" value="' + SplashURL + '">');
        TagValue = TagValue + ('<param name="RESOURCES_URL" value="' + ResourcesURL + '">');
        TagValue = TagValue + ('<param name = "CODEBASE" value = "' + unescape(location.href.substring(0, eoURL)) +  '">');
        TagValue = TagValue + ('<param name="LIB_URL" value="' + OSXLibURL + '">');
        TagValue = TagValue + ('<param name="BACKGROUND_URL" value="' + BackgroundURL + '">');
        TagValue = TagValue + ('<param name="ENDSCREEN_URL" value="' + EndscreenURL + '">');

        TagValue = TagValue + generateAutoPlayParams(autoPlayURL, false, PlaybackWidth, PlaybackHeight, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded, params);

        TagValue = TagValue + 'Java is not enabled in your browser!</APPLET>';

        return TagValue;
    }
    else if(Platform == PLATFORM_MACOSX_INTEL) {
        TagValue = '<APPLET MAYSCRIPT=true code = "PlayerApplet.class" archive = "' + MacIA32JVMArchive + '" ID="' + AppletName + '" NAME="' + AppletName + '" WIDTH="' + PlaybackWidth + '" HEIGHT="' + PlaybackHeight + '"> <param name = "archive" value = "' + MacIA32JVMArchive + '"> <param name = "code" value = "PlayerApplet.class">';

        TagValue = TagValue + ('<param name="SPLASH_URL" value="' + SplashURL + '">');
        TagValue = TagValue + ('<param name="RESOURCES_URL" value="' + ResourcesURL + '">');
        TagValue = TagValue + ('<param name = "CODEBASE" value = "' + unescape(location.href.substring(0, eoURL)) +  '">');
        TagValue = TagValue + ('<param name="LIB_URL" value="' + OSXIA32LibURL + '">');
        TagValue = TagValue + ('<param name="BACKGROUND_URL" value="' + BackgroundURL + '">');
        TagValue = TagValue + ('<param name="ENDSCREEN_URL" value="' + EndscreenURL + '">');

        TagValue = TagValue + generateAutoPlayParams(autoPlayURL, false, PlaybackWidth, PlaybackHeight, startFrame, endFrame, clientID, showEndPrompt, prebufferMS, inWindow, embedded, params);

        TagValue = TagValue + 'Java is not enabled in your browser!</APPLET>';

        //alert(TagValue);

        return TagValue;
    }
    else if(Platform == PLATFORM_SAFARI_3) {
        alert("Currently this video player does not support Safari version 3, which is a non-standards compliant browser. Please use Firefox until further notice.");
        _noPlayer = true;
        location.href = FailPageURL;
    }
    else {
        //document.writeln('Unfortunately, the Operating System you are currently using is unsupported.');
        _noPlayer = true;
        location.href = FailPageURL;
    } // if

    return "";
}

function videoPlayerLoader()
{
    // force safari 3 to properly lay the page out if it hasn't yet

	var ignoreMe = document.body.offsetWidth;

    try {
        getRefToDiv("LoadProgress").style.display = "block";
        getRefToDiv("LoadProgress").innerHTML = "0% loaded";
    }
    catch(except) {
    }

    _loadCheckTimer = setInterval("checkLoad()", 1000);
    getRefToDiv("VideoPlayerSection").innerHTML = getPlayerScript("", "");
}

function videoPlayerUnloader()
{
	try {
		if(_statusCheckTimer != 0) {
			clearInterval(_statusCheckTimer);
			_statusCheckTimer = 0;
		}
	}
	catch(except) {
	}
}

// -- playlist functionality implementation

function Track(URL,
           width,
           height,
           startFrame,
           endFrame,
           showEndPrompt,
           prebufferMS,
           inWindow,
           embedded,
           showSplash,
           splashDelay,
           clientID)
{
    this._url = URL;
    this._width = width;
    this._height = height;
    this._startFrame = startFrame;
    this._endFrame = endFrame;
    this._showEndPrompt = showEndPrompt;
    this._prebufferMS = prebufferMS;
    this._inWindow = inWindow;
    this._embedded = embedded;
    this._showSplash = showSplash;
    this._splashDelay = splashDelay;
    this._clientID = clientID;
}

function appendToPlaylist(URL,
              width,
              height,
              startFrame,
              endFrame,
              showEndPrompt,
              prebufferMS,
              inWindow,
              embedded,
              showSplash,
              splashDelay,
              clientID)
{
    var playTrack = new Track(URL,width,height,startFrame,endFrame,showEndPrompt,prebufferMS,inWindow,embedded,showSplash,splashDelay,clientID);

    if(_playlist == null)
        _playlist = new Array(playTrack);
    else
        _playlist = _playlist.concat(playTrack);
}

function clearPlaylist()
{
    _playlist = null;
}

function playAllTracks()
{
    _activePlaylistTrackIdx = 0;

    if(_playlist.length > 0)
        playTrack(_playlist[_activePlaylistTrackIdx])
}

/*
function playTrack(track)
{
    getPlayerObject().terminate();

    resizePlayer(track._width, track._height);
    getPlayerObject().setShowSplashScreen(track._showSplash);
    playPressedFull(track._url, track._inWindow, track._startFrame, track._endFrame, track._prebufferMS, track._splashDelay, track._showEndPrompt, track._embedded);
    getPlayerObject().setShowSplashScreen(true);

    //var callstring = "playPressedFull(\"" + track._url + "\"," + track._inWindow + "," + track._startFrame + "," + track._endFrame + "," + track._prebufferMS + "," + track._splashDelay + "," + track._showEndPrompt + "," + track._embedded + ")";
    //setTimeout(callstring, 500);
}
*/

function playTrack(track)
{
    getPlayerObject().terminate();

    getPlayerObject().setShowSplashScreen(track._showSplash);
    playPressedFull(track._url, track._inWindow, track._startFrame, track._endFrame, track._prebufferMS, track._splashDelay, track._showEndPrompt, track._embedded);

    var callstring = "resizePlayer(" + track._width + "," + track._height + ")";
    setTimeout(callstring, 100);
}

function advanceActivePlaylistTrack()
{
    _activePlaylistTrackIdx++;

    if(_playlist != null && _activePlaylistTrackIdx < _playlist.length)
        playTrack(_playlist[_activePlaylistTrackIdx]);
}

function getPlaylistLength()
{
    if(_playlist == null)
        return 0;
    else
        return _playlist.length;
}

function getActivePlaylistTrackIdx()
{
    return _activePlaylistTrackIdx;
}

function getPlaylistEntry(idx)
{
    if(_playlist == null || idx >= _playlist.length)
        return null;
    else
        return _playlist[idx];
}

function onPlayerEOS()
{
    customEOSHandler();

    if(_playlist != null && _playlist.length >  0)
        advanceActivePlaylistTrack();
    else
        _activePlaylistTrackIdx = 0;
}

//-->
