﻿function LoadIBSilvPlayer(GroupId, Width, Height, Buttons, ComingUpNext, Language) {
    if (Language && Language == "en-GB") {
        sWindowsMedia1 = "To view the high quality streaming video you need to install Microsoft Silverlight.<br> Click the Silverlight logo to navigate to the Microsoft website for further instructions.";

        sWindowsMedia2 = "If Silverlight cannot be installed on your computer you can view the show with Windows Media Player.<br> Click ";

        sHere = "here"

        sWindowsMedia3 = " to watch the stream.";
    }
    else {
        sWindowsMedia1 = "Om de hoge kwaliteit streaming video te bekijken dient u de Microsoft Silverlight player te installeren.<br> Klik op het Silverlight logo om naar de Microsoft website te gaan voor instructies.";

        sWindowsMedia2 = "Indien Silverlight op uw computer niet geïnstalleerd kan worden kunt u de uitzending bekijken met Windows Media Player.<br> Klik ";

        sHere = "hier";

        sWindowsMedia3 = " om de stream te bekijken.";
    }
    
    document.writeln("<div id='errorLocation' style=\"font-size: small;color: Gray;\"></div>");
    document.writeln("<div id=\"silverlightControlHost\">");
    document.writeln("<object data=\"data:application/x-silverlight-2,\" type=\"application/x-silverlight-2\" width=\"" + Width + "\" height=\"" + Height + "\">");
    document.writeln("<param name=\"source\" value=\"http://streaming1.instorebroadcast.com/ClientBin/WebStream.xap\"/>");
    document.writeln("<param name=\"onerror\" value=\"onSilverlightError\" />");
    document.writeln("<param name=\"background\" value=\"darkgray\" />");
    document.writeln("<param name=\"minRuntimeVersion\" value=\"2.0.31005.0\" />");
    document.writeln("<param name=\"initParams\" value=\"GroupId=" + GroupId + ",Width=" + Width + ",Height=" + Height + ",Buttons=" + Buttons + ",StreamMode=Extern,ComingUpNext=" + ComingUpNext + "\" />");
    document.writeln("<div style=\"padding:2px; text-align:left; width:450px; height:75px; color:White;\">" + sWindowsMedia1 + "</div>");
    document.writeln("<a href=\"http://go.microsoft.com/fwlink/?LinkID=124807\" style=\"text-decoration: none;\">");
    document.writeln("<img src=\"http://go.microsoft.com/fwlink/?LinkId=108181\" alt=\"Get Microsoft Silverlight\" style=\"border-style: none\"/>");
    document.writeln("</a>");
    document.writeln("<div style=\"padding:2px; text-align:left; color:White; width:450px; height:75px;\">" + sWindowsMedia2 + " <a href=\"#\" onclick=\"LoadWMVPlayer('" + GroupId + "'," + Width + "," + Height + ");\" style=\"text-decoration: underline; color:White; \">" + sHere + "</a>" + sWindowsMedia3 + "</div>");
    document.writeln("</object>");
    document.writeln("<iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>");
    document.writeln("</div>");    
}

function LoadWMVPlayer(GroupId, Width, Height) {
    var playercode = "<OBJECT id=WinMedia type=application/x-oleobject height=" + Height + " standby=\"Loading Microsoft® Windows® Media Player components...\" width=" + Width + " classid=CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95 VIEWASTEXT>";
    playercode += "<PARAM NAME=\"AutoStart\" Value=\"true\">";
    playercode += "<PARAM NAME=\"ShowControls\" value=\"False\">";
    playercode += "<PARAM NAME=\"Filename\" Value=\"http://streaming1.instorebroadcast.com:8080/WebStream?group=" + GroupId + "\">";
    playercode += "<PARAM NAME=\"Loop\" VALUE=\"True\">";
    playercode += "<EMBED type=\"application/x-mplayer2\" pluginspage=\"http://www.microsoft.com/Windows/MediaPlayer/\" SRC=\"http://streaming1.instorebroadcast.com:8080/WebStream?group=" + GroupId + "\" name=\"WinMedia\" width=\"" + Width + "\" height=\"" + (Height + 19) + "\" autostart=\"1\" ShowStatusBar=\"0\" ShowDisplay=\"0\" ShowControls=\"0\"></EMBED>";
    playercode += "</OBJECT>";

    setTimeout(function() { document.getElementById("silverlightControlHost").innerHTML = playercode; }, 1000);
}

function LoadIBSilvPlayerClip(ClipId, Width, Height, Buttons, Language) {
    if (Language && Language == "en-GB") {
        sWindowsMedia1 = "To view the high quality streaming video you need to install Microsoft Silverlight.<br> Click the Silverlight logo to navigate to the Microsoft website for further instructions.";

        sWindowsMedia2 = "If Silverlight cannot be installed on your computer you can view the show with Windows Media Player.<br> Click ";

        sHere = "here"

        sWindowsMedia3 = " to watch the stream.";
    }
    else {
        sWindowsMedia1 = "Om de hoge kwaliteit streaming video te bekijken dient u de Microsoft Silverlight player te installeren.<br> Klik op het Silverlight logo om naar de Microsoft website te gaan voor instructies.";

        sWindowsMedia2 = "Indien Silverlight op uw computer niet geïnstalleerd kan worden kunt u de uitzending bekijken met Windows Media Player.<br> Klik ";

        sHere = "hier";

        sWindowsMedia3 = " om de stream te bekijken.";
    }

    document.writeln("<div id='errorLocation' style=\"font-size: small;color: Gray;\"></div>");
    document.writeln("<div id=\"silverlightControlHost\">");
    document.writeln("<object data=\"data:application/x-silverlight-2,\" type=\"application/x-silverlight-2\" width=\"" + Width + "\" height=\"" + Height + "\">");
    document.writeln("<param name=\"source\" value=\"http://streaming1.instorebroadcast.com/ClientBin/WebStream.xap\"/>");
    document.writeln("<param name=\"onerror\" value=\"onSilverlightError\" />");
    document.writeln("<param name=\"background\" value=\"darkgray\" />");
    document.writeln("<param name=\"minRuntimeVersion\" value=\"2.0.31005.0\" />");
    document.writeln("<param name=\"initParams\" value=\"ClipId=" + ClipId + ",Width=" + Width + ",Height=" + Height + ",Buttons=" + Buttons + ",StreamMode=Extern\" />");
    document.writeln("<div style=\"padding:2px; text-align:left; width:250px; height:75px; color:White; \">" + sWindowsMedia1 + "</div>");
    document.writeln("<a href=\"http://go.microsoft.com/fwlink/?LinkID=124807\" style=\"text-decoration: none;\">");
    document.writeln("<img src=\"http://go.microsoft.com/fwlink/?LinkId=108181\" alt=\"Get Microsoft Silverlight\" style=\"border-style: none\"/>");
    document.writeln("</a>");
    document.writeln("<div style=\"padding:2px; text-align:left; width:250px; height:75px; color:White;\">" + sWindowsMedia2 + " <a href=\"#\" onclick=\"LoadWMVPlayerClip('" + ClipId + "'," + Width + "," + Height + ");\" style=\"text-decoration: underline; color:White;\">" + sHere + "</a>" + sWindowsMedia3 + "</div>");
    document.writeln("</object>");
    document.writeln("<iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>");
    document.writeln("</div>");
}

function LoadWMVPlayerClip(ClipId, Width, Height) {
    var playercode = "<OBJECT id=WinMedia type=application/x-oleobject height=" + Height + " standby=\"Loading Microsoft® Windows® Media Player components...\" width=" + Width + " classid=CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95 VIEWASTEXT>";
    playercode += "<PARAM NAME=\"AutoStart\" Value=\"true\">";
    playercode += "<PARAM NAME=\"ShowControls\" value=\"False\">";
    playercode += "<PARAM NAME=\"Filename\" Value=\"http://streaming1.instorebroadcast.com:8080/WebStream?clip=" + ClipId + "\">";
    playercode += "<PARAM NAME=\"Loop\" VALUE=\"True\">";
    playercode += "<EMBED type=\"application/x-mplayer2\" pluginspage=\"http://www.microsoft.com/Windows/MediaPlayer/\" SRC=\"http://streaming1.instorebroadcast.com:8080/WebStream?clip=" + ClipId + "\" name=\"WinMedia\" width=\"" + Width + "\" height=\"" + (Height + 19) + "\" autostart=\"1\" ShowStatusBar=\"0\" ShowDisplay=\"0\" ShowControls=\"0\"></EMBED>";
    playercode += "</OBJECT>";

    setTimeout(function() { document.getElementById("silverlightControlHost").innerHTML = playercode; }, 1000);
}

function LoadIBSilvPlayerUrl(Element, Url, Width, Height, Buttons, ComingUpNext, Language) {
    var PlayerCode = "";

    if (Language && Language == "en-GB") {
        sWindowsMedia1 = "To view the high quality streaming video you need to install Microsoft Silverlight.<br> Click the Silverlight logo to navigate to the Microsoft website for further instructions.";

        sWindowsMedia2 = "If Silverlight cannot be installed on your computer you can view the show with Windows Media Player.<br> Click ";

        sHere = "here"

        sWindowsMedia3 = " to watch the stream.";
    }
    else {
        sWindowsMedia1 = "Om de hoge kwaliteit streaming video te bekijken dient u de Microsoft Silverlight player te installeren.<br> Klik op het Silverlight logo om naar de Microsoft website te gaan voor instructies.";

        sWindowsMedia2 = "Indien Silverlight op uw computer niet geïnstalleerd kan worden kunt u de uitzending bekijken met Windows Media Player.<br> Klik ";

        sHere = "hier";

        sWindowsMedia3 = " om de stream te bekijken.";
    }

    GlobalElement = Element;
    GlobalUrl = Url;
    GlobalWidth = Width;
    GlobalHeight = Height;

    PlayerCode += "<div id='errorLocation' style=\"font-size: small;color: Gray;\"></div>";
    PlayerCode += "<div id=\"silverlightControlHost\">";
    PlayerCode += "<object data=\"data:application/x-silverlight-2,\" type=\"application/x-silverlight-2\" width=\"" + Width + "\" height=\"" + Height + "\">";
    PlayerCode += "<param name=\"source\" value=\"http://streaming1.instorebroadcast.com/ClientBin/WebStream.xap\"/>";
    PlayerCode += "<param name=\"onerror\" value=\"OnCustomUrlError\" />";
    PlayerCode += "<param name=\"background\" value=\"darkgray\" />";
    PlayerCode += "<param name=\"minRuntimeVersion\" value=\"2.0.31005.0\" />";
    PlayerCode += "<param name = \"windowless\" value = \"true\" />";
    PlayerCode += "<param name=\"initParams\" value=\"Url=" + Url + ",Width=" + Width + ",Height=" + Height + ",Buttons=" + Buttons + ",StreamMode=Extern\" />";
    PlayerCode += "<div style=\"padding:2px; text-align:left; width:250px; height:75px; color:White; \">" + sWindowsMedia1 + "</div>";
    PlayerCode += "<a href=\"http://go.microsoft.com/fwlink/?LinkID=124807\" style=\"text-decoration: none;\">";
    PlayerCode += "<img src=\"http://go.microsoft.com/fwlink/?LinkId=108181\" alt=\"Get Microsoft Silverlight\" style=\"border-style: none\"/>";
    PlayerCode += "</a>";
    PlayerCode += "<div style=\"padding:2px; text-align:left; width:250px; height:75px; color:White; \">" + sWindowsMedia2 + " <a href=\"#\" onclick=\"LoadWMVPlayerUrl(" + Url + "," + Width + "," + Height + ");\" style=\"text-decoration: none;\">" + sHere + "</a>" + sWindowsMedia3 + "</div>";
    PlayerCode += "</object>";
    PlayerCode += "<iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>";
    PlayerCode += "</div>";

    try {
        Element.innerHTML = PlayerCode;
    }
    catch (x) {
        OnCustomError();
    }
}

function LoadWMVPlayerUrl(Url, Width, Height) {
    var playercode = "<OBJECT id=WinMedia type=application/x-oleobject height=" + Height + " standby=\"Loading Microsoft® Windows® Media Player components...\" width=" + Width + " classid=CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95 VIEWASTEXT>";
    playercode += "<PARAM NAME=\"AutoStart\" Value=\"true\">";
    playercode += "<PARAM NAME=\"ShowControls\" value=\"False\">";
    playercode += "<PARAM NAME=\"Filename\" Value=\"" + Url + "\">";
    playercode += "<PARAM NAME=\"Loop\" VALUE=\"True\">";
    playercode += "<EMBED type=\"application/x-mplayer2\" pluginspage=\"http://www.microsoft.com/Windows/MediaPlayer/\" SRC=\"" + Url + "\" name=\"WinMedia\" width=\"" + Width + "\" height=\"" + (Height + 19) + "\" autostart=\"1\" ShowStatusBar=\"0\" ShowDisplay=\"0\" ShowControls=\"0\"></EMBED>";
    playercode += "</OBJECT>";

    setTimeout(function() { document.getElementById("silverlightControlHost").innerHTML = playercode; }, 1000);
}


if (!window.Silverlight) {
    window.Silverlight = {};
}

// Silverlight control instance counter for memory mgt
Silverlight._silverlightCount = 0;
Silverlight.fwlinkRoot = 'http://go2.microsoft.com/fwlink/?LinkID=';
Silverlight.onGetSilverlight = null;
Silverlight.onSilverlightInstalled = function() { window.location.reload(false); };

//////////////////////////////////////////////////////////////////
// isInstalled, checks to see if the correct version is installed
//////////////////////////////////////////////////////////////////
Silverlight.isInstalled = function(version) {
    var isVersionSupported = false;
    var container = null;

    try {
        var control = null;

        try {
            control = new ActiveXObject('AgControl.AgControl');
            if (version == null) {
                isVersionSupported = true;
            }
            else if (control.IsVersionSupported(version)) {
                isVersionSupported = true;
            }
            control = null;
        }
        catch (e) {
            var plugin = navigator.plugins["Silverlight Plug-In"];
            if (plugin) {
                if (version === null) {
                    isVersionSupported = true;
                }
                else {
                    var actualVer = plugin.description;
                    if (actualVer === "1.0.30226.2")
                        actualVer = "2.0.30226.2";
                    var actualVerArray = actualVer.split(".");
                    while (actualVerArray.length > 3) {
                        actualVerArray.pop();
                    }
                    while (actualVerArray.length < 4) {
                        actualVerArray.push(0);
                    }
                    var reqVerArray = version.split(".");
                    while (reqVerArray.length > 4) {
                        reqVerArray.pop();
                    }

                    var requiredVersionPart;
                    var actualVersionPart
                    var index = 0;


                    do {
                        requiredVersionPart = parseInt(reqVerArray[index]);
                        actualVersionPart = parseInt(actualVerArray[index]);
                        index++;
                    }
                    while (index < reqVerArray.length && requiredVersionPart === actualVersionPart);

                    if (requiredVersionPart <= actualVersionPart && !isNaN(requiredVersionPart)) {
                        isVersionSupported = true;
                    }
                }
            }
        }
    }
    catch (e) {
        isVersionSupported = false;
    }
    if (container) {
        document.body.removeChild(container);
    }

    return isVersionSupported;
}
Silverlight.WaitForInstallCompletion = function() {
    if (!Silverlight.isBrowserRestartRequired && Silverlight.onSilverlightInstalled) {
        try {
            navigator.plugins.refresh();
        }
        catch (e) {
        }
        if (Silverlight.isInstalled(null)) {
            Silverlight.onSilverlightInstalled();
        }
        else {
            setTimeout(Silverlight.WaitForInstallCompletion, 3000);
        }
    }
}
Silverlight.__startup = function() {
    Silverlight.isBrowserRestartRequired = Silverlight.isInstalled(null); //(!window.ActiveXObject || Silverlight.isInstalled(null));
    if (!Silverlight.isBrowserRestartRequired) {
        Silverlight.WaitForInstallCompletion();
    }
    if (window.removeEventListener) {
        window.removeEventListener('load', Silverlight.__startup, false);
    }
    else {
        window.detachEvent('onload', Silverlight.__startup);
    }
}

if (window.addEventListener) {
    window.addEventListener('load', Silverlight.__startup, false);
}
else {
    window.attachEvent('onload', Silverlight.__startup);
}

///////////////////////////////////////////////////////////////////////////////
// createObject();  Params:
// parentElement of type Element, the parent element of the Silverlight Control
// source of type String
// id of type string
// properties of type String, object literal notation { name:value, name:value, name:value},
//     current properties are: width, height, background, framerate, isWindowless, enableHtmlAccess, inplaceInstallPrompt:  all are of type string
// events of type String, object literal notation { name:value, name:value, name:value},
//     current events are onLoad onError, both are type string
// initParams of type Object or object literal notation { name:value, name:value, name:value}
// userContext of type Object
/////////////////////////////////////////////////////////////////////////////////

Silverlight.createObject = function(source, parentElement, id, properties, events, initParams, userContext) {
    var slPluginHelper = new Object();
    var slProperties = properties;
    var slEvents = events;

    slPluginHelper.version = slProperties.version;
    slProperties.source = source;
    slPluginHelper.alt = slProperties.alt;

    //rename properties to their tag property names
    if (initParams)
        slProperties.initParams = initParams;
    if (slProperties.isWindowless && !slProperties.windowless)
        slProperties.windowless = slProperties.isWindowless;
    if (slProperties.framerate && !slProperties.maxFramerate)
        slProperties.maxFramerate = slProperties.framerate;
    if (id && !slProperties.id)
        slProperties.id = id;

    // remove elements which are not to be added to the instantiation tag
    delete slProperties.ignoreBrowserVer;
    delete slProperties.inplaceInstallPrompt;
    delete slProperties.version;
    delete slProperties.isWindowless;
    delete slProperties.framerate;
    delete slProperties.data;
    delete slProperties.src;
    delete slProperties.alt;


    // detect that the correct version of Silverlight is installed, else display install

    if (Silverlight.isInstalled(slPluginHelper.version)) {
        //move unknown events to the slProperties array
        for (var name in slEvents) {
            if (slEvents[name]) {
                if (name == "onLoad" && typeof slEvents[name] == "function" && slEvents[name].length != 1) {
                    var onLoadHandler = slEvents[name];
                    slEvents[name] = function(sender) { return onLoadHandler(document.getElementById(id), userContext, sender) };
                }
                var handlerName = Silverlight.__getHandlerName(slEvents[name]);
                if (handlerName != null) {
                    slProperties[name] = handlerName;
                    slEvents[name] = null;
                }
                else {
                    throw "typeof events." + name + " must be 'function' or 'string'";
                }
            }
        }
        slPluginHTML = Silverlight.buildHTML(slProperties);
    }
    //The control could not be instantiated. Show the installation prompt
    else {
        slPluginHTML = Silverlight.buildPromptHTML(slPluginHelper);
    }

    // insert or return the HTML
    if (parentElement) {
        parentElement.innerHTML = slPluginHTML;
    }
    else {
        return slPluginHTML;
    }

}

///////////////////////////////////////////////////////////////////////////////
//
//  create HTML that instantiates the control
//
///////////////////////////////////////////////////////////////////////////////
Silverlight.buildHTML = function(slProperties) {
    var htmlBuilder = [];

    htmlBuilder.push('<object type=\"application/x-silverlight\" data="data:application/x-silverlight,"');
    if (slProperties.id != null) {
        htmlBuilder.push(' id="' + slProperties.id + '"');
    }
    if (slProperties.width != null) {
        htmlBuilder.push(' width="' + slProperties.width + '"');
    }
    if (slProperties.height != null) {
        htmlBuilder.push(' height="' + slProperties.height + '"');
    }
    htmlBuilder.push(' >');

    delete slProperties.id;
    delete slProperties.width;
    delete slProperties.height;

    for (var name in slProperties) {
        if (slProperties[name]) {
            htmlBuilder.push('<param name="' + Silverlight.HtmlAttributeEncode(name) + '" value="' + Silverlight.HtmlAttributeEncode(slProperties[name]) + '" />');
        }
    }
    htmlBuilder.push('<\/object>');
    return htmlBuilder.join('');
}




// createObjectEx, takes a single parameter of all createObject parameters enclosed in {}
Silverlight.createObjectEx = function(params) {
    var parameters = params;
    var html = Silverlight.createObject(parameters.source, parameters.parentElement, parameters.id, parameters.properties, parameters.events, parameters.initParams, parameters.context);
    if (parameters.parentElement == null) {
        return html;
    }
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Builds the HTML to prompt the user to download and install Silverlight
///////////////////////////////////////////////////////////////////////////////////////////////
Silverlight.buildPromptHTML = function(slPluginHelper) {
    var slPluginHTML = "";
    var urlRoot = Silverlight.fwlinkRoot;
    var shortVer = slPluginHelper.version;
    if (slPluginHelper.alt) {
        slPluginHTML = slPluginHelper.alt;
    }
    else {
        if (!shortVer) {
            shortVer = "";
        }
        slPluginHTML = "<a href='javascript:Silverlight.getSilverlight(\"{1}\");' style='text-decoration: none;'><img src='{2}' alt='Get Microsoft Silverlight' style='border-style: none'/></a>";
        slPluginHTML = slPluginHTML.replace('{1}', shortVer);
        slPluginHTML = slPluginHTML.replace('{2}', urlRoot + '108181');
    }

    return slPluginHTML;
}


Silverlight.getSilverlight = function(version) {
    if (Silverlight.onGetSilverlight) {
        Silverlight.onGetSilverlight();
    }

    var shortVer = "";
    var reqVerArray = String(version).split(".");
    if (reqVerArray.length > 1) {
        var majorNum = parseInt(reqVerArray[0]);
        if (isNaN(majorNum) || majorNum < 2) {
            shortVer = "1.0";
        }
        else {
            shortVer = reqVerArray[0] + '.' + reqVerArray[1];
        }
    }

    var verArg = "";

    if (shortVer.match(/^\d+\056\d+$/)) {
        verArg = "&v=" + shortVer;
    }

    Silverlight.followFWLink("114576" + verArg);
}


///////////////////////////////////////////////////////////////////////////////////////////////
/// Navigates to a url based on fwlinkid
///////////////////////////////////////////////////////////////////////////////////////////////
Silverlight.followFWLink = function(linkid) {
    top.location = Silverlight.fwlinkRoot + String(linkid);
}












///////////////////////////////////////////////////////////////////////////////////////////////
/// Encodes special characters in input strings as charcodes
///////////////////////////////////////////////////////////////////////////////////////////////
Silverlight.HtmlAttributeEncode = function(strInput) {
    var c;
    var retVal = '';

    if (strInput == null) {
        return null;
    }

    for (var cnt = 0; cnt < strInput.length; cnt++) {
        c = strInput.charCodeAt(cnt);

        if (((c > 96) && (c < 123)) ||
                  ((c > 64) && (c < 91)) ||
                  ((c > 43) && (c < 58) && (c != 47)) ||
                  (c == 95)) {
            retVal = retVal + String.fromCharCode(c);
        }
        else {
            retVal = retVal + '&#' + c + ';';
        }
    }

    return retVal;
}
///////////////////////////////////////////////////////////////////////////////
//
//  Default error handling function to be used when a custom error handler is
//  not present
//
///////////////////////////////////////////////////////////////////////////////

Silverlight.default_error_handler = function(sender, args) {
    var iErrorCode;
    var errorType = args.ErrorType;

    iErrorCode = args.ErrorCode;

    var errMsg = "\nSilverlight error message     \n";

    errMsg += "ErrorCode: " + iErrorCode + "\n";


    errMsg += "ErrorType: " + errorType + "       \n";
    errMsg += "Message: " + args.ErrorMessage + "     \n";

    if (errorType == "ParserError") {
        errMsg += "XamlFile: " + args.xamlFile + "     \n";
        errMsg += "Line: " + args.lineNumber + "     \n";
        errMsg += "Position: " + args.charPosition + "     \n";
    }
    else if (errorType == "RuntimeError") {
        if (args.lineNumber != 0) {
            errMsg += "Line: " + args.lineNumber + "     \n";
            errMsg += "Position: " + args.charPosition + "     \n";
        }
        errMsg += "MethodName: " + args.methodName + "     \n";
    }
    alert(errMsg);
}

///////////////////////////////////////////////////////////////////////////////////////////////
/// Releases event handler resources when the page is unloaded
///////////////////////////////////////////////////////////////////////////////////////////////
Silverlight.__cleanup = function() {
    for (var i = Silverlight._silverlightCount - 1; i >= 0; i--) {
        window['__slEvent' + i] = null;
    }
    Silverlight._silverlightCount = 0;
    if (window.removeEventListener) {
        window.removeEventListener('unload', Silverlight.__cleanup, false);
    }
    else {
        window.detachEvent('onunload', Silverlight.__cleanup);
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// Releases event handler resources when the page is unloaded
///////////////////////////////////////////////////////////////////////////////////////////////
Silverlight.__getHandlerName = function(handler) {
    var handlerName = "";
    if (typeof handler == "string") {
        handlerName = handler;
    }
    else if (typeof handler == "function") {
        if (Silverlight._silverlightCount == 0) {
            if (window.addEventListener) {
                window.addEventListener('onunload', Silverlight.__cleanup, false);
            }
            else {
                window.attachEvent('onunload', Silverlight.__cleanup);
            }
        }
        var count = Silverlight._silverlightCount++;
        handlerName = "__slEvent" + count;

        window[handlerName] = handler;
    }
    else {
        handlerName = null;
    }
    return handlerName;
}

function onSilverlightError(sender, args) {

    var appSource = "";
    if (sender != null && sender != 0) {
        appSource = sender.getHost().Source;
    }
    var errorType = args.ErrorType;
    var iErrorCode = args.ErrorCode;

    var errMsg = "Unhandled Error in Silverlight 2 Application " + appSource + "\n";

    errMsg += "Code: " + iErrorCode + "    \n";
    errMsg += "Category: " + errorType + "       \n";
    errMsg += "Message: " + args.ErrorMessage + "     \n";

    if (errorType == "ParserError") {
        errMsg += "File: " + args.xamlFile + "     \n";
        errMsg += "Line: " + args.lineNumber + "     \n";
        errMsg += "Position: " + args.charPosition + "     \n";
    }
    else if (errorType == "RuntimeError") {
        if (args.lineNumber != 0) {
            errMsg += "Line: " + args.lineNumber + "     \n";
            errMsg += "Position: " + args.charPosition + "     \n";
        }
        errMsg += "MethodName: " + args.methodName + "     \n";
    }

    throw new Error(errMsg);
}